Frage

Ich mag die Registrierungswerte auf dem PocketPC ändern. Ich lief den folgenden Code:

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

aber es shange nicht den Registrierungseintrag. Wer weiß, wie Registrierungsschlüsselwerte mit c einzustellen ++?

Danke!

War es hilfreich?

Lösung

Es gibt zwei Probleme mit dem, was Sie tun:

1: RegSetValueEx erhält keinen Weg, nur einen Wertname. So müssen Sie zuerst den Schlüssel Weg öffnen.

z.

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: Dieser Bereich der Registrierung erfordert Privilegierte Codesignatur auf allen Windows Mobile-Geräten zu arbeiten. Sie können mit ihr auf den meisten aktuellen Touch-Screen-Windows Mobile-Geräte weg, wenn der Benutzer sagt „Ja“ zu dem unbekannten Verleger Frage, wenn die Anwendung zum ersten Mal ausgeführt wird oder installiert ist. Wenn Sie einen „Zugriff verweigert“ erhalten Fehler auf dem Set, dann müssen Sie wirklich Privilegierte Code sein unterzeichnete für das Set zu arbeiten.

Andere Tipps

RegSetValueEx gibt einen beschreibenden Fehlercode. Sie können eine für Menschen lesbare Nachricht aus diesem Fehlercode erhalten Format verwenden und möglicherweise über das Fehlersuchdienst-Tool oder die @ERR Anlage in VS. Der Code, den Sie haben sieht richtig so sehen, was die Fehlermeldung sagt.

Wie Verifizieren Sie die Änderung? Beachten Sie, dass diese Änderung wird nicht automatisch in das Geräteverhalten reflektiert und es wird wahrscheinlich zeigen, nicht in der Systemsteuerung auf entweder (hängt davon ab, ob die CPL bereits geladen wurde oder nicht). Die Schale ist nicht bewusst, dass Sie die Änderung vorgenommen hat und es nicht abfragen, nicht den Wert - man muss es sagen zu gehen und wieder lesen. Wie es zu tun ist in MSDN dokumentiert (im Grunde legen Sie einen Namen Systemereignis).

Check out [VORegistry] [1], macht es mit der Registrierung Arbeit so viel einfacher.

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

Unter der Annahme, dass Ihr mit RegEdit suchen, haben Sie (F5) die Registrierung Ansicht aktualisieren?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top