Entwickler-Ecke
IO, XML und Registry - Local Machine Schlüssel scheiben -> Error Zugriff Verweigert
brümi - So 28.08.11 20:49
Titel: Local Machine Schlüssel scheiben -> Error Zugriff Verweigert
Hallo
Ich möchte mir ein kleines C#-Progrämmchen schreiben welches das Programm-Menü per Rechtsklick automatisiert
(
http://www.chip.de/artikel/Windows-7-Secrets-4_43248336.html).
Hier der Code:
RegistryKey loRegistryKey = Registry.LocalMachine.CreateSubKey(@"Software\\Classes\\DesktopBackground\\Shell\\test");
doch ich bekomme immer den Fehler:
Der Zugriff auf den Registrierungsschlüssel "HKEY_LOCAL_MACHINE\Software\Classes\DesktopBackground\Shell\test" wurde verweigert.
Jedoch habe ich keine Ahnung, wie ich die Zugriffsrechte regeln könnte. Brauche ich dazu "bloss" admin Rechte, wenn ja wie kann ich das codetechnisch umsetzen??
Habe schon gegoogelt, aber nicht viel Hilfreiches erfahren...
Vielen Dank im Vorraus!
Edit:
Der Code funktioniert eigentlich...habe das Programm testweise einen Schlüssel nach Current User schreiben lassen.
Th69 - Mo 29.08.11 09:56
Hallo und :welcome:
das Stichwort, um einen Prozess unter einen anderen Benutzer (z.B. als Admin) laufen zu lassen, lautet "impersonate" (impersonalisieren).
Funktioniert es denn, wenn du dein Programm mittels "als Administrator ausführen" (run as admin) laufen läßt?
brümi - Di 30.08.11 21:32
Danke.
Wenn ich das Programm mit Admin Rechten starte, funktioniert es teilweise.
Diese Codezeile funktioniert:
C#-Quelltext
1:
| RegistryKey MenuKey = Registry.LocalMachine.CreateSubKey(@"Software\\Classes\\DesktopBackground\\Shell\\" + MenuName); |
aber dieser Schlüssel wird nicht erzeugt:
C#-Quelltext
1:
| RegistryKey Item = Registry.LocalMachine.CreateSubKey (@"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\CommandStore\\shell\\"+ name); |
Sollten doch beide funktionieren??! name und MenuName sind natürlich Strings, bekomme auch keine Fehlermeldung
Werde mich nooch ein bisschen schlau machen wegen "impersonate"
Moderiert von
Th69: C#-Tags hinzugefügt
jaenicke - Mi 31.08.11 07:06
Ich mache das in der Regel einfach so, dass ich bei fehlenden Adminrechten das eigene Programm an der Stelle mit Adminrechten und entsprechenden Parametern erneut starte. Dann kann der Benutzer einfach die Rechte bestätigen und ich muss nicht mit COM, OutOfProcess, ... arbeiten.
Zu dem Registryschlüssel:
Kann es sein, dass du 64-Bit Windows benutzt, aber ein 32-Bit Programm erstellst? Dann musst du den Schlüssel auch dort suchen...
Quelltext
1:
| SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\name |
brümi - Mi 31.08.11 19:46
Vielen Dank!
Genau das war mein Fehler!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!