Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi registry (hklm) unter Win7 ändern? (https://www.delphipraxis.net/145308-registry-hklm-unter-win7-aendern.html)

Marco Steinebach 29. Dez 2009 11:55


registry (hklm) unter Win7 ändern?
 
Hallo,
irgendwie fehlt mir der richtige Suchbegriff, denn das gabs hier ganz sicher schonmal. ;-)
Ich möchte einen neuen Wert unter
HKLM\Software\Microsoft\Windows\Current version\... in die Registry eintragen. Unter WinXp ist das auch kein Ding, aber unter Win7, und wahrscheinlich auch unter Vista, kriege ich eine Exception.
Was muß ich tun, damit Win7 da friedlich ist?
Bitte um Hilfe!
Einen freundlichen Gruß
Marco

Mithrandir 29. Dez 2009 11:59

Re: registry (hklm) unter Win7 ändern?
 
Zitat:

Zitat von Marco Steinebach
HKLM\Software\Microsoft\Windows\Current version\... in die Registry eintragen. Unter WinXp ist das auch kein Ding, aber unter Win7, und wahrscheinlich auch unter Vista, kriege ich eine Exception.
Was muß ich tun, damit Win7 da friedlich ist?

1) Administrator sein
2) Wenn 1) nicht möglich ist, HKCU stattdessen nutzen...

himitsu 29. Dez 2009 12:00

Re: registry (hklm) unter Win7 ändern?
 
Du brauchst für diesen Zweig die nötigen Rechte ... ein normaler Benutzer hat diese nicht.

Unter XP waren Alle noch "Admins", aber seit Vista ist man standardmäßig nur "Benutzer".

Marco Steinebach 30. Dez 2009 17:56

Re: registry (hklm) unter Win7 ändern?
 
Hallo,
und ersteinmal vielen herzlichen Dank für eure Antworten.
Okay, um diese Rechte zu kriegen kann ich
1. die Application restart and recover API (aar) nutzen,
2. einen DLL schreiben, und die als COM-Server registrieren,
okay, okay, soweit begriffen,
aber gibt's nicht eine einfachere Möglichkeit?
Ich muß nur einmal einen Wert unter HKLM speichern. Muß ich dafür echt 'ne DLL programmieren mit all dem Aufwand drumherum?
Kann ich mein Prog irgendwie als Admin starten - ich brauche mal 'nen Schups in die richtige Richtung, bitte!
Einen freundlichen Gruß
Marco

himitsu 30. Dez 2009 18:12

Re: registry (hklm) unter Win7 ändern?
 
das Programm immer als Admin starten -> passendes Manifest einbinden

das Program mal mal mit und mal ohne Adminrechte starten -> z.B. MSDN-Library durchsuchenCreateProcess

Bernhard Geyer 30. Dez 2009 23:34

Re: registry (hklm) unter Win7 ändern?
 
Zitat:

Zitat von Marco Steinebach
Kann ich mein Prog irgendwie als Admin starten - ich brauche mal 'nen Schups in die richtige Richtung, bitte!

Nur durch die offizielen Möglichkeiten. Alles andere ist eine Sicherheitslücke und wird hoffentlich schnellstmöglich von MS behoben.

Zitat:

Zitat von Marco Steinebach
... Unter WinXp ist das auch kein Ding, aber unter Win7, und wahrscheinlich auch unter Vista, kriege ich eine Exception.

Dann lass mal dein Programm mit einem User laufen der nur Benutzer oder Gast ist. Deine Vista/Win7-Probleme gibt es schon seit Windows NT.

cookie22 31. Dez 2009 05:06

Re: registry (hklm) unter Win7 ändern?
 
du könnstest deinen installer den wert schreiben lassen, wenn es denn einen solchen gibt. da ist es recht normal, dass der admin rechte braucht unter vista/7.

Marco Steinebach 2. Jan 2010 16:18

Re: registry (hklm) unter Win7 ändern?
 
Hallo zusammen,
also läuft alles auf eine zweite EXE mit passendem Manifest hinaus, die die einträge schreibt.
Denn wenn ich gleich ein Manifest einbinde, will mein Programm immer Admin-Rechte haben, die es nicht braucht, und, also, auch nicht kriegt. ;-)
Mit freundlichen Grüßen
Marco

olee 8. Feb 2010 15:09

Re: registry (hklm) unter Win7 ändern?
 
He ich habe das gleiche Problem, nur das ich in den HKEY_CLASSES_ROOT Zweig schreiben will, ohne das das Programm immer als Admin läuft.

Ich habe schon viele Programme gesehen (vor allem Installer), die nicht schon beim Programmstart,
sondern erst später wenn die Rechte benötigt werden, diese anfordern (Win-Vista).

Wie lässt sich sowas denn nun lösen?

EDIT:
Hat sich erledigt ich habe eine sehr elegante lösung gefunden:
Man kann mit ShellExecute die Regedit.exe aufrufen mit dem Startparameter "/s <Filename>".
Filename ist dabei eine Datei mit den Registry-Einträgen.
"/s" bewirkt, das nicht gefragt wird, ob man die Einträge aus der Datei wirklich übernehmen möchte (/silent)

Das praktische an der geschichte ist, das alles mit UACund dem Kram schon durch regedit erledigt wird.

MFG


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz