Entwickler-Ecke
Windows API - Registry-Schlüssel in HKEY_LOCAL_MACHINE schreiben mit UAC
LonghornUser - Mi 21.10.09 20:35
Titel: Registry-Schlüssel in HKEY_LOCAL_MACHINE schreiben mit UAC
Hallo,
ich habe ein Problem mit der Benutzerkontensteuerung (UAC) unter Windows 7 (das wird sich aber bestimmt unter Vista genauso verhalten). Ich schreibe durch folgenden Code in die Registry:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| If IsAdmin = True then begin Reg:=TRegistry.Create; Reg.RootKey:=HKEY_LOCAL_MACHINE; Reg.OpenKey('Software\Test1\Test2',True);
Reg.WriteString('Test3','1'); end; |
Leider bekomme ich dann eine Fehlermeldung "Cannot write ...", welche nicht abgefangen wird, weil man ja trotzdem als Admin angemeldet ist, nur die UAC Schreibrechte entzieht.
Habt ihr eine Idee, wie ich dieses Problem beheben könnte?
Ciao LHUser
Moderiert von
Narses: Quote- durch Delphi-Tags ersetzt
Andreas L. - Mi 21.10.09 21:00
Vielleicht klappt folgendes:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| var Reg: TRegistry; begin try Reg := TRegistry.Create(KEY_ALL_ACCESS); except end; end; |
LonghornUser - Mi 21.10.09 21:20
OK, das hat schon mal geklappt. Jetzt kommt kein Fehler mehr. Nur habe ich nun das Problem, dass ich den Wert in der Registry nicht mehr schreiben kann. Und wenn ich "Als Administratot ausführen" mache, kommt der Fehler auch.
Wie macht mand denn Änderungen an HKLM, wenn UAC aktiviert ist?
LonghornUser - Mi 21.10.09 23:41
Das isAdmin mache ich ja schon, aber es ist in diesem Fall nicht hilfreich, weil zB. ein Admin mit UAC trotzdem ein Admin bleibt, obwohl er keine uneingeschränkten Rechte hat.
Aber der Ansatz mit dem "als Admin öffnen" sollte funktionieren. Danke für den Hinweis ;)
Delete - Do 22.10.09 00:07
Leg ein Manifest dabei, dass deine Anwendung echte Adminsitratorechte benötigt. Dann kommt schon beim Start die UAC.
LonghornUser - Do 22.10.09 00:24
Das wäre auch ne Idee, aber mein Programm startet, wenn vom User gewünscht, im Autostart. Dann müsste man jedes mal bestätigen. Das wäre doch sehr nervig. Kann man dieses Verhalten irgendwie umgehen?
jaenicke - Do 22.10.09 06:20
LonghornUser hat folgendes geschrieben : |
Das isAdmin mache ich ja schon, aber es ist in diesem Fall nicht hilfreich, weil zB. ein Admin mit UAC trotzdem ein Admin bleibt, obwohl er keine uneingeschränkten Rechte hat. |
Ich weiß nicht was
dein IsAdmin macht, aber IsUserAnAdmin ist genau dafür um festzustellen, ob du über die UAC die Rechte hast... :roll:
LonghornUser - Do 22.10.09 13:57
Funktioniert das denn auch in XP?
Delete - Do 22.10.09 15:23
Warum sollte es nicht? Einmal in der Hilfe geguckt:
Zitat: |
Requires Windows Vista, Windows XP, Windows 2000 Professional, or Windows NT Workstation 4.0 SP3 and later. |
Außerdem hätte man es schnell mit meinem Beispielprogramm ausprobieren können, wenn XP vorhanden ist.
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!