문제

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)?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top