Pergunta

Eu quero mudar os valores do registro no PocketPC. Eu corri o seguinte código:

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;
}

mas não Shange a entrada de registo. Alguém sabe como valores chave do Registro definida com c ++?

Obrigado!

Foi útil?

Solução

Existem dois problemas com o que está fazendo:

1: não RegSetValueEx não tomar um caminho, apenas uma ValueName. Então, você precisa abrir o caminho da chave em primeiro lugar.

por exemplo.

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: Essa área do registro requer a assinatura de código privilégio de trabalhar em todos os dispositivos Windows Mobile. Você pode fugir com ele em dispositivos móveis a maioria das janelas de tela de toque atual se o usuário diz "sim" à pergunta editor desconhecido quando o aplicativo é executado pela primeira vez ou instalado. Se você receber um "acesso negado" erro no set, então você realmente precisa para ser código privilegiado assinado para o conjunto de trabalho.

Outras dicas

RegSetValueEx retorna um código de erro descritiva. Você pode obter uma mensagem para fora legível deste código de erro usando FormatMessage e, possivelmente, através da ferramenta de pesquisa de erro, ou a instalação @ERR em VS. O código que você tem aparência correta para ver o que a mensagem de erro diz.

Como você está verificando a mudança? Tenha em mente que fazer essa alteração irá não ser automaticamente refletido no comportamento do dispositivo e isso provavelmente não vai aparecer no painel de controle ou (depende se o CPL já foi carregado ou não). O shell não sabe que você fez a alteração e não consultar o valor - você tem que dizer-lhe para sair e re-leitura. Como fazê-lo é documentado na MSDN (basicamente você definir um chamado eventos do sistema).

Confira [VORegistry] [1], faz trabalhar com o registro de modo muito mais fácil.

[1]: http://www.voscorp.com /products/developer/winmobile/voregistry/index.htm VORegistry

Assumindo que o seu olhar com RegEdit, fez você atualizar (F5) a visão registro?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top