Schreiben Sie einen DWORD-Wert zur Registrierung in C++

Ich versuche, mich zum schreiben eines DWORD-Werts zur Registrierung programmgesteuert in C++.

Ich habe mich ein bisschen auf der Suche, und ich habe festgestellt, dass diese Frage gestellt wurde, vor. Ich habe versucht zu Folgen und Ihre Lösung, sondern haben sich mit einem wirklich frustrierend Problem, das, soweit ich weiß, noch nicht angesprochen wurden von Ihrer Lösung.

Dies ist mein code:

HKEY hKey;
LPCWSTR sKeyPath;
int iResult;

sKeyPath = L"Software\\ABI\\";
iResult = RegOpenKeyEx(HKEY_CURRENT_USER, sKeyPath, NULL, KEY_ALL_ACCESS, &hKey);
DWORD value = 0x00000003;
iResult = RegSetValueEx(hKey, L"Test", NULL, REG_DWORD, (const BYTE*)value, sizeof(value));
RegCloseKey(hKey);

Ich habe getan, einige grundlegende Fehlersuche und festgestellt, dass der Wert von iResult ist 998, nachdem ich call RegSetValueEx. Ich bin sicher, dass dieser Schlüssel vorhanden ist, in der windows-Registrierung erstellt, weil ich es manuell mit regedit.exe für Testzwecke. Der DWORD-Wert "Test" ist zunächst 0x00000009 und ist unverändert, nachdem ich aus meinem Programm.

Ich bin nicht sicher, wo ich falsch bin.

Jede mögliche Hilfe würde geschätzt.

P. S. ich habe nicht geschafft zu finden, hilfreiche Seite im Netz für Fehler 998. Die einzige Referenz, die ich gefunden erwähnt, dass das der Schlimmste Fehler, den Sie bekommen können beim Umgang mit der registry.

P. P. S. übrigens, ich bin mit diesem Programm auf Windows 8. Ich glaube nicht, dass das etwas ändert, aber ich habe Erfahrungen mit Windows 8 mit einigen seltsamen Sicherheitsproblemen vor.

  • Sie möchten möglicherweise überprüfen Sie das Ergebnis Ihrer RegOpenKeyEx, auch wenn Sie wissen, es ist es. Das sagte, ich glauben hmjd Ihre korrekte Antwort.
  • Wenn Sie überprüft hatte, was 998 bedeutet, könnten Sie wahrscheinlich haben es herausgefunden. net helpmsg 998 in der Eingabeaufforderung gibt Sie Invalid access to memory location. - 0x00000003 ist keine gültige Adresse zum Lesen aus.
  • Danke. Ich wusste nicht, es ist ein Weg, um zu überprüfen, Fehler in der Eingabeaufforderung. Machte mich etwas lernen.
InformationsquelleAutor l3utterfly | 2012-11-06
Schreibe einen Kommentar