Laden...

Wert in Windows Registry wird nicht geändert und wirft auch keinen Fehler

Erstellt von IncepTer vor 7 Jahren Letzter Beitrag vor 7 Jahren 1.869 Views
I
IncepTer Themenstarter:in
24 Beiträge seit 2016
vor 7 Jahren
Wert in Windows Registry wird nicht geändert und wirft auch keinen Fehler

Hallo Freunde,

ich bastel für mich ein kleines Tool, welches verschiedene Funktionen von Windows aus einem Nenner bedienen/(de)aktivieren/verändern soll. Dazu gehört z.B. die Deaktivierung der
Systemwiederherstellung.

Folgender Reg-Eintrag muss dazu geändert werden:

RegistryKey subkey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRestore\", true);

Und darin soll der Wert geändert werden:

subkey.SetValue("DisableSR", "1", RegistryValueKind.DWord);

Jedenfalls wird der Wert nicht geändert und es kommt auch kein Fehler.
Andere Einträge z.B. in CurrentUser gehen.
Ich denke, es liegt an den Rechten?
Das Programm wird mit Admin-Rechten gestartet. Sind dies Einträge, die System-Berechtigungen benötigen? Ich bin zZ als eingeschränkger Nutzer unterwegs und wenn ich RegEdit als "Chef" aufrufe (so wie das Tool), dann kann ich manuell die Einstellungen vornehmen.

Könnt Ihr mir da einen Tipp geben?

[Sollte dieses das falsche Forum sein, tut es mir leid!]

Beste Grüße

H
523 Beiträge seit 2008
vor 7 Jahren

Der Code sieht auf den ersten Blick richtig aus.

Bei fehlenden Rechten sollte eigentlich eine Exception geworfen werden. Fängst Du die ggf. schon irgendwo ab?

I
IncepTer Themenstarter:in
24 Beiträge seit 2016
vor 7 Jahren

Es wird mit Try / Catch versucht und wirft keine Exception.
Wenn ich einen Fehler provoziere (durch einen falschen Schlüssel, etc.) dann wird eine
Exception geworfen.

Ich habe leider auch keine Idee...

Weiter oben im Programm, ändere ich auch Einstellungen im Prefetch/Superfetch, was ohne Probleme klappt:

RegistryKey key = RegistryKey key = Registry.LocalMachine.OpenSubKey("SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Memory Management\\PrefetchParameters", true); 
key.SetValue("EnableSuperfetch", "0", RegistryValueKind.DWord);
H
523 Beiträge seit 2008
vor 7 Jahren

Schau Dir mal das Programm procmon an. Damit siehst Du welche Registry-Zugriffe passieren und warum sie ggf. nicht funktionieren.

I
IncepTer Themenstarter:in
24 Beiträge seit 2016
vor 7 Jahren

Danke für den Tipp.
Interessante Erkenntnis:

Er arbeitet in folgenden Ordnerpfad:

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\SystemRestore

Anstatt in:

 RegistryKey key1 = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SystemRestore", true);

Ich habe festgestellt, das es deutliche Probleme unter Win 7/10 mit diesen Reg-Thema gibt.
Prinzipiell hat es funktioniert, aber das System wollte eben nicht so wie ich.

Danke an alle.

H
523 Beiträge seit 2008
vor 7 Jahren