Windowsapi 레지스트리 작업 경험 및 요약
RegOpenKeyEx 키를 여는 데 사용
키 값을 설정하는 데 사용되는 RegSetValueEx
RegQueryValueEx 키를 읽는 데 사용되는 값
RegCloseKey는 RegOpen에서 열린 키를 닫는 데 사용됩니다.
RegQuery ValueEx는 보통 두 번 연속해서 키 값을 읽고, 첫 번째는 키 크기만 읽고, 메모리를 분배한 다음, 다시 한 번 RegQuery ValueEx로 키 값을 버퍼로 읽습니다.
다음은 윈도우즈의 path 키 값을 읽는 예입니다.
HKEY hk;
int result = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
_T("SYSTEM\\ControlSet001\\Control\\Session Manager\\Environment"),
NULL,
KEY_READ, &hk );
if(result != ERROR_SUCCESS)
{
if(result == ERROR_FILE_NOT_FOUND)
{
MessageBox(g.hwnd,_T("no such key in RegOpenKeyEx"),_T("title"),MB_ICONWARNING);
}
else
return;
}
DWORD lsize;
result = RegQueryValueEx(hk, _T("Path"),NULL,NULL,
NULL, &lsize);
if(result != ERROR_SUCCESS)
{
if(result == ERROR_FILE_NOT_FOUND)
{
MessageBox(g.hwnd,_T("no such key in RegQueryValue"),_T("title"),MB_ICONWARNING);
}
else if(result == ERROR_MORE_DATA)
{
MessageBox(g.hwnd,_T("need more buffer"),_T("title"),MB_ICONWARNING);
}
else
return;
}
TCHAR *value = (TCHAR * )malloc(lsize * sizeof(TCHAR));
result = RegQueryValueEx(hk, _T("Path"),NULL,NULL,
(LPBYTE)value, &lsize);
if(result != ERROR_SUCCESS)
{
if(result == ERROR_FILE_NOT_FOUND)
{
MessageBox(g.hwnd,_T("no such key in RegQueryValue"),_T("title"),MB_ICONWARNING);
}
else if(result == ERROR_MORE_DATA)
{
MessageBox(g.hwnd,_T("need more buffer"),_T("title"),MB_ICONWARNING);
}
else
return;
}
SetWindowText(g.hwndEdit,value);
free(value);
RegCloseKey(hk);
초보자 FAQRegSetValueEx 실행 중 실패했습니다. 반환 코드는 5입니다.
해결 방법: 이 경우 등록표에 대한 접근 권한이 부족하여 접근을 거부한다는 뜻입니다. 따라서 권한이 부족하지 않은지 주의하십시오.
KEY_ALL_ACCESS는 문제없습니다. 이렇게 읽고 쓰는 등의 권한은 모두 가능합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[WinIoT/라즈파이] VS2019로 만든 UWP의 sln을 라즈파이 3+WinIoTCore로 원격 디버깅을 할 수 없을 때의 대처2021년 1월 시점에서 라즈파이 3에 WindowsIoTCore를 넣고 VisualStudio2019에서 UWP 앱을 새로 만들고 디버깅하려고 했는데 잘 디버깅할 수 없었다. 구체적으로는, 「리모트 디버거에 접속할...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.