레지스트리 값 편집
-
05-07-2019 - |
문제
PocketPC의 레지스트리 값을 변경하고 싶습니다.다음 코드를 실행했습니다.
if(enabled)
{
dwData = 120;
}
if(RegSetValueEx(HKEY_LOCAL_MACHINE, _T("System\\CurrentControlSet\\Control\\Power\\Timeouts\\BattSuspendTimeout"), 0, REG_DWORD, (LPBYTE)&dwData, sizeof(DWORD)))
{
return FALSE;
}
하지만 레지스트리 항목은 변경되지 않습니다.C++로 레지스트리 키 값을 설정하는 방법을 아는 사람이 있습니까?
감사해요!
해결책
당신이 하고 있는 일에는 두 가지 문제가 있습니다:
1:RegSetValueEx는 경로를 사용하지 않고 값 이름만 사용합니다.따라서 먼저 키 경로를 열어야 합니다.
예를 들어
HKEY key;
if(ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE, "System\\CurrentControlSet\\Control\\Power\\Timeouts", 0, 0, &key))
{
if(RegSetValueEx(key, _T("BattSuspendTimeout"), 0, REG_DWORD, (LPBYTE)&dwData, sizeof(DWORD)))
{
RegCloseKey(key);
return FALSE;
}
RegCloseKey(key);
}
2:모든 Windows Mobile 장치에서 작동하려면 레지스트리의 해당 영역에 권한 있는 코드 서명이 필요합니다.애플리케이션을 처음 실행하거나 설치할 때 사용자가 알 수 없는 게시자 질문에 "예"라고 대답하면 최신 터치스크린 Windows 모바일 장치에서 문제를 해결할 수 있습니다.세트에서 "액세스 거부" 오류가 발생하는 경우 세트가 작동하려면 권한 있는 코드 서명이 필요합니다.
다른 팁
regsetValueex 설명 오류 코드를 반환합니다. FormatMessage와 오류 조회 도구 또는 @err 시설을 통해이 오류 코드에서 휴먼 읽을 수있는 메시지를 얻을 수 있습니다. 당신이 가지고있는 코드가 올바르게 보이므로 오류 메시지가 알려주는 내용을 확인하십시오.
변경 사항을 어떻게 확인하고 있습니까? 이 변화를 만드는 것은 할 것임을 명심하십시오 ~ 아니다 장치 동작에 자동으로 반영되면 제어판에 표시되지 않을 수 있습니다 (CPL이 이미로드되었는지 여부에 따라 다름). 쉘은 당신이 변경을했다는 것을 알지 못하고 가치를 폴링하지 않습니다. 나가서 다시 읽도록 지시해야합니다. 그것을하는 방법입니다 MSDN에 문서화되었습니다 (기본적으로 이름이 지정된 시스템 이벤트를 설정합니다).
voregistry] [1]를 확인하면 레지스트리와의 작업이 훨씬 쉬워집니다.
[1]: http://www.voscorp.com/products/developer/winmobile/voregistry/index.htm voregistry
Regedit을보고 있다고 가정하면 레지스트리보기를 새로 고침 했습니까 (F5)?