Benutzer mit den meisten Antworten
SetRegistryKey funktioniert nicht in Dialog basierter Win32 Anwendung

Frage
-
Guten Tag,
es ist mir bisher leider nicht gelungen einen Registry Key unter HKCL\Software mit SetRegistryKey() zu setzen, wie das in der Initialisierungsroutine meiner Anwendung ja sogar beschrieben ist (siehe unten).
Ich entwickele eine Dialog basierte Win32 MFC-Anwendung auf Visuel C++ 2010 Prof. unter Windows 7 Prof. SP1 64 Bit. Vorsichtshalber habe ich auch bereits unter HKCU\Software\Wow6432Node nachgeschaut, aber auch hier ist nichts zu finden.
Ich habe mir bei der bisherigen Suche fast die Ohren gebrochen, finde aber keinen konkreten Hinweis auf irgendwelche Fehler meinerseits. Muß man irgendwelche speziellen Einstellungen am Entwicklungssystem Vornehmen um die Registry manipulieren zu können? Ich benötige die Registry in diesem Fall und müßte sonst auf die gute alte INI-Datei zurückgreifen.
Wer kennt die Lösung für mein - wahrscheinlich triviales - Problem?
// Ändern Sie den Registrierungsschlüssel, unter dem Ihre Einstellungen gespeichert sind. // TODO: Ändern Sie diese Zeichenfolge entsprechend, // z.B. zum Namen Ihrer Firma oder Organisation. SetRegistryKey(_T("Rds"));
M. Thaddaeus
Antworten
-
Hallo M.,
woher willst du wissen, dass der Wert nicht gespeichert wird?
1) Versuche doch mal, ob die Einstellung durch die Lesenmethoden gelesen werden kann?
2) Du kannst auch die gesamte Registry druchsuchen (zu oberen Ebene im "Baum" gehen, STRG+F).
© 2015 Thomas Roskop
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 14. Januar 2015 09:20
- Als Antwort markiert m-thaddaeus Mittwoch, 14. Januar 2015 12:18
-
Nun erinnerte ich mich, daß der Schlüssel ja erst dann im RegEdit sichtbar wird, wenn der Rechner neu gestartet wurde.
Nö ganz sicher nicht. Wenn der RegEdit offen ist mit F5 aktualisieren. Wenn Du per Software Schlüssel in der Registry änderst, dann mußt du den PC nicht booten damit Du die siehst! Die Schlüssel aktualisieren sich nur nicht automatisch.
Wenn Du Registry Keys in andere Zweige schreiben möchtest gibt es Reg* API Funktionen (z.B. RegCreateKeyEx, RegGetValue, RegSetValueEx). Wichtig ist nur dass Du dann die Zugriffsbeschränkungen der Registry Äste beachtest. HKLM z.B. ist nur elevated schreib fähig.
Best regards
Bordon
Note: Posted code pieces may not have a good programming style and may not perfect. It is also possible that they do not work in all situations. Code pieces are only indended to explain something particualar.- Als Antwort markiert m-thaddaeus Mittwoch, 14. Januar 2015 12:22
Alle Antworten
-
Hallo M.,
dass Du den Wert nicht findest, dürfte daran liegen dass er unter HKEY_CURRENT_USER (HKCU) erstellt wird, siehe CWinApp::SetRegistryKey - was auch besser ist, denn in HKLM darf ein Standard-Benutzer nicht schreiben, spätestens seit Windows Vista.
Werte, die in HKLM gespeichert werden sollen, sollte man während des Setups mit Administrator Rechten eintragen.
Gruß Elmar
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 14. Januar 2015 09:20
-
Guten Morgen Elmar,
wie ich bereits schrieb, habe ich unter HKCU\Software (HKEY_CURRENT_USER\Software) nachgeschaut! Da tut sich aber nichts! Ebenso ist nichts unter HKCU\Software\Wow6432Node etwas zu finden. Es kann also nicht daran gelegen haben, daß ich im falsch nachgeschaut habe, es muß einen anderen Grund geben! Fragt sich nur welchen?
M. Thaddaeus
-
Hallo M.,
woher willst du wissen, dass der Wert nicht gespeichert wird?
1) Versuche doch mal, ob die Einstellung durch die Lesenmethoden gelesen werden kann?
2) Du kannst auch die gesamte Registry druchsuchen (zu oberen Ebene im "Baum" gehen, STRG+F).
© 2015 Thomas Roskop
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 14. Januar 2015 09:20
- Als Antwort markiert m-thaddaeus Mittwoch, 14. Januar 2015 12:18
-
Hallo,
hast Du denn auch Werte geschrieben? Die Methode legt "nur" den Namen für den Zweig fest, den anschließende WriteProfile-Methoden verwenden. Andere Wege wie CRegKey Class benutzen den Wert nicht - und das Ganze dürfte eher eine INI-Migrationshilfe (aus Windows 9x Tagen) sein.
Ansonsten: Überwache mit dem Process Monitor, wo die Werte entschwinden...
Gru8 Elmar
-
Hallo Elmar,
herzlichen Dank für Deinen Hinweis! Nachdem ich meinen Blechotto neu gestartet hatte habe ich die Registry komplett durchsucht und --- oh Wunder --- den Schlüssel entdeckt. Der war da wo er hingehört, nämlich in HKCU\Software! Nun erinnerte ich mich, daß der Schlüssel ja erst dann im RegEdit sichtbar wird, wenn der Rechner neu gestartet wurde. Ich hatte ja geahnt, daß die Lösung meines Problems trivial sein müsse und behielt leider recht.
Nochmals Dank für Deine Mühe.
M. Thaddaeus
-
Hallo M. Thaddaeus,
Du kannst Beiträge, die Dir weitergeholfen haben, als Antworten markieren, damit auch künftige Leser dieses Threads leichter auf die Lösung kommen.
Gruß,
Dimitar
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
- Bearbeitet Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 14. Januar 2015 09:23
-
Nun erinnerte ich mich, daß der Schlüssel ja erst dann im RegEdit sichtbar wird, wenn der Rechner neu gestartet wurde.
Nö ganz sicher nicht. Wenn der RegEdit offen ist mit F5 aktualisieren. Wenn Du per Software Schlüssel in der Registry änderst, dann mußt du den PC nicht booten damit Du die siehst! Die Schlüssel aktualisieren sich nur nicht automatisch.
Wenn Du Registry Keys in andere Zweige schreiben möchtest gibt es Reg* API Funktionen (z.B. RegCreateKeyEx, RegGetValue, RegSetValueEx). Wichtig ist nur dass Du dann die Zugriffsbeschränkungen der Registry Äste beachtest. HKLM z.B. ist nur elevated schreib fähig.
Best regards
Bordon
Note: Posted code pieces may not have a good programming style and may not perfect. It is also possible that they do not work in all situations. Code pieces are only indended to explain something particualar.- Als Antwort markiert m-thaddaeus Mittwoch, 14. Januar 2015 12:22