Autor Beitrag
matthew77
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Di 04.04.17 16:16 
Hallo Leute,
ich weiß, dass man mit der Suche jede Menge Seiten zu dem Thema findet, aber auf allen die ich mir angeschaut habe ging es nur um triviale Fehler, die die Ursache waren. Kurzum: ich bin hier mit meinem Latein am Ende und brauche dringend Hilfe von echten Experten:
Ich möchte in einem Registryschlüssel in der Sektion
"HKey_Classes_Root\Wow6432Node\CLSID\{HIER IST MEINE GUID}"
einen neuen Wert eintragen. Den Schlüssel öffnen klappt noch (aber nur wenn ich als Access Mode "KEY_READ" benutze!!!)
Nach dem erfolgreichen
Reg.OpenKey('Trallala', false)
geht es wie folgt weiter:
Reg.Access := KEY_WRITE; // ich will ja jetzt auch meinen Stringwert reinschreiben
Reg.WriteString('AppID','Trallala2');

und bei der letzten Zeile kommt dann eine Exception: "Fehler beim Setzen der Daten für 'AppID'"

Das ganze muss irgendwie mit Benutzerrechten zu tun haben. Aber ich bin schon "Admin" (habe ich mit Delphi Funktion auch noch mal bestätigt bekommen) und weiß nicht, wie ich mir die Schreibrechte auf diese Schlüssel sonst holen soll.
Hat jemand eine Idee?
Hintergrund ist übrigens dieser Artikel hier:
techtalk.gfi.com/32b...t-64bit-environment/
Ich muss ca. 100 Registryeinträge nach dem Schema bearbeiten und mache das nicht gerne von Hand sondern lieber mit einem selbstgestrickten Hilfsprogramm. Von Hand kann ich in RegEdit übrigens alles machen, aber in Delphi gibts diese doofen Exceptions. Bitte helft mir, sonst weine ich gleich!!

Moderiert von user profile iconNarses: Beiträge zusammengefasst

Hmm, hab gerade noch was gelesen. Man kann im Registrierungs-Editor die Berechtigungen für einzelne Registry Keys sehen und teilweise auch ändern. Bei meinen Keys ist es allerdings so, dass auch Administratoren nur "Lesen" dürfen. Der einzige, der Vollzugriff hat ist der ominöse "TrustedInstaller". Mir ist es leider nicht gelungen, diese Berechtigungen umzustellen auf "Vollzugriff" für Admins. Weiß jemand, wie so etwas geht???

Moderiert von user profile iconNarses: Beiträge zusammengefasst

Habe meine Lösung hier gefunden:
codeverge.com/embarc...nd-tregistry/1094815

Die Lösung ist:
statt
reg:=TRegistry.Create(KEY_READ);
einfach nur
reg:=TRegistry.Create();

aufrufen! Im verlinkten Artikel steht sinngemäß dass er sonst Benutzerrechte prüft...
Na so was...

Moderiert von user profile iconNarses: Beiträge zusammengefasst

Doof. Hab mich zu früh gefreut. Es klappt mit dem ersten Teil ganz wunderbar. Aber das Anlegen eines neuen Schlüssels unter HKey_Local_Machine\Software\Classes\AppID\ wird strikt verweigert. Interessanterweise klappt es hier nicht mal im Regiestrierungseditor (Regedit). Was tun???
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 04.04.17 18:20 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Holgerx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 58
Erhaltene Danke: 23

Win95 - Win8.1 / MSServer2000 - MSServer2012
Delphi 6pro / XE4
BeitragVerfasst: Di 04.04.17 19:51 
Tja, es gibt in der Registry tatsächlich Pfade/Key, die nicht mal der Administrator ändern kann, auch nicht elevated..

Hier handelt es sich um Keys, wo nur der "TrustedInstaller" schreibrechte hat, dieser wird bei Installation seitens des OS verwendet.

Um die Keys dennoch ändern zu können, musst Du dich zum Owner des Keys machen und kannst dann diesen ändern.

Dann kannst Du dem Admin auch Schreibrechte geben.

Für diesen Beitrag haben gedankt: matthew77
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 04.04.17 20:08 
- Nachträglich durch die Entwickler-Ecke gelöscht -

Für diesen Beitrag haben gedankt: matthew77
matthew77 Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 05.04.17 12:55 
Also erstmal vielen Dank an Euch beide, vor allem Frühlingsrolle für sein umfangreiches Beispielprogramm. Das ist wirklich EXTREM NETT!!!
Ich verstehe die Einzelheiten ehrlich gesagt immer noch nicht so ganz, aber es hat funktioniert!
Das Beispielprogramm wurde auf meinem Win7-32bit PC unter Delphi mit 32-bit ohne Probleme ausgeführt und tat was es sollte. Auf meinem anderen PC mit Win7-64bit funktionierte das Anlegen des Schlüssels nicht ohne weiteres. Ich musste die kompilierte EXE noch mal explizit "Als Administrator ausführen" (Kontextmenü der Exe im Windows Explorer) und dann klappte es auch dort. Ich hatte eigentlich eine Funktion per Copy & Paste aus dem Netz geholt, die mir anzeigt ob ich Admin bin und die zeigte IMMER an, dass ich Admin bin, aber es gibt da wohl noch einen Unterschied zwischen Admin "normal" und Admin mit "Wollen Sie das wirklich????" Dialog.
Ergänzung: hab gerade herausgefunden, dass es auch klappt, wenn man Delphi als Administrator startet: dann kann ich nämlich auch den Debugger nutzen!!

PS: ich hatte mich übrigens vorher mit der Aussage, dass es über Regedit nicht geht geirrt: ich hatte versucht einen Unterschlüssel unter einem Eintrag in AppID anzulegen und das war irgendwie nicht erlaubt.
Einen Schlüssel direkt unter AppID zu erstellen war dagegen kein Problem.