Autor Beitrag
brümi
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 28.08.11 20:49 
Hallo

Ich möchte mir ein kleines C#-Progrämmchen schreiben welches das Programm-Menü per Rechtsklick automatisiert
(www.chip.de/artikel/...ets-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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4796
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Di 30.08.11 21:32 
Danke.
Wenn ich das Programm mit Admin Rechten starte, funktioniert es teilweise.

Diese Codezeile funktioniert:
ausblenden C#-Quelltext
1:
RegistryKey MenuKey = Registry.LocalMachine.CreateSubKey(@"Software\\Classes\\DesktopBackground\\Shell\\" + MenuName);					


aber dieser Schlüssel wird nicht erzeugt:
ausblenden 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 user profile iconTh69: C#-Tags hinzugefügt
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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...
ausblenden Quelltext
1:
SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\name					
brümi Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mi 31.08.11 19:46 
Vielen Dank!
Genau das war mein Fehler!