2008-10-29 4 views
2

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++로 레지스트리 키 값을 설정하는 방법을 알고 있습니까?

감사합니다.

답변

7

는 2 당신이하고있는 일에 문제가 있습니다 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 모바일 장치에서이 기능을 사용할 수 있습니다. 세트에서 "액세스 거부"오류가 발생하면 세트가 작동하도록 권한 코드가 서명되어 있어야합니다.

1

RegSetValueEx는 설명적인 오류 코드를 반환합니다. 이 오류 코드에서 FormatMessage를 사용하여 사람이 읽을 수있는 메시지를 가져올 수 있으며 오류 검색 도구 또는 VS의 @ERR 기능을 통해 가능할 수도 있습니다. 당신이 옳은 코드 그래서 오류 메시지가 당신에게 알려주는 참조하십시오.

0

RegEdit을보고 있다고 가정하면 레지스트리보기를 새로 고칩니다 (F5)?

1

변경 사항을 어떻게 확인 하시겠습니까? 이 변경을 수행하면 이 아닌이 자동으로 기기 동작에 반영되며 제어판 (CPL이 이미로드되었는지 여부에 따라 다름)에 표시되지 않습니다. 쉘은 당신이 변경 한 것을 알지 못하고 값을 폴링하지 않습니다 - 당신은 나가서 다시 읽으라고 말해야합니다. 그것을 수행하는 방법은 documented in MSDN입니다 (기본적으로 명명 된 시스템 이벤트를 설정합니다).

1 :

관련 문제