Daten in die Regestry eintragen
-
Hallo, ich möcht ein Programm schreiben, daß mir *.reg Dateien in die Regestry einträgt. Mir ist bekannt, daß ich mitRegCreateKeyEx und RegSetValueEx Regestryeinträge durchführen kann. Jetzt ist es jedoch so, daß sich die Werte und Schlüssel in *.reg Dateien befinden. Ich möcht nun ohne großen Aufwand, (parsen der *.reg Files) diese aufrufen und in die Regestry eintragen, also so als ob man darauf doppelklickt. Bei Windows Vista kommmt aber immer der Bestätigungsdialog wegen der Benutzerkontensteuerung. Wie kann ich es anstellen, da ich ja über Admin Name/Password verfüge, dies ohne nervigen Hinweis im Hintergrund durchzuführen?
-
.REG Dateien sind ein spzielles Format der REGEDIT.EXE und haben nicht mit der Registry zu tun. Letzten Endes ist REGEDIT nur ein Verwaltungsutility.
Es gibt keine API Funktion, die REG Dateien in die Registry einträgt.
Nachfrage: Um was für Einträge handelt es sich? HKLM?
In diesenm Fall wirst Du immer ein Admin Kennwort benötigen! Auch wenn Du es in Deinem Programm mit RegCreateKey etc. machst.
-
Also die Daten befinden sich alle in [HKEY_CURRENT_USER\Software\....] d.h. über die API-Funktiionen ohne Probleme ohne Username/Kennwort ausführbar. Ich wollte es der einfachheithalber so machen das ich die *.reg Datei aufrufe, jetzt muss ich mir halt selber eine Textdatei mit dem Inhalt erstellen in der Schlüssel und Daten enthalten sind, richtig?
-
Ja! Regedit kannst Du nicht verwenden.
Ich finde das Fromat der REG Dateien jedoch icht schwierig.
Du könntest Dr auch ein VBS Script bauen und ausführen.
-
wenn du die dateien hast und mit c++ ausführen willst,
dann geht das z.B. so (unterdrückt die anzeige; /s = silent mode)
ShellExecute (Handle, "open", "regedit.exe" , "/s deineDatei.reg", NULL, SW_SHOW);Und wenn bei dir die Änderungen erst nach explorer-neustart wirken (z.B. ändern der Ordneroptionen) geht das so:
ShellExecute (Handle, "open", "tskill" , "explorer", NULL, SW_SHOW); ShellExecute (Handle, "open", "explorer" , NULL, NULL, SW_SHOW);
-
das ist aber ganz übel

-
Wieso?
-
unreg schrieb:
wenn du die dateien hast und mit c++ ausführen willst,
dann geht das z.B. so (unterdrückt die anzeige; /s = silent mode)
ShellExecute (Handle, "open", "regedit.exe" , "/s deineDatei.reg", NULL, SW_SHOW);Und wenn bei dir die Änderungen erst nach explorer-neustart wirken (z.B. ändern der Ordneroptionen) geht das so:
ShellExecute (Handle, "open", "tskill" , "explorer", NULL, SW_SHOW); ShellExecute (Handle, "open", "explorer" , NULL, NULL, SW_SHOW);Wenn ich den Befehl von Hand eingebe meckert die Benutzerkontensteuerung von Vista wie gewohnt. Bist du sicher, daß das unter Vista funktioniert? Das sieht mir eher nach einer WinXP Lösung aus.
-
Uuups

Marco.. schrieb:
... Windows Vista kommmt aber immer der Bestätigungsdialog wegen der Benutzerkontensteuerung. ...
Aber wenn du das Programm nur auf deinem eigenem PC öffnen willst, dann geht das auch irgendwie. Habe da neulich in der Chip gelesen.
-
Habs gefunden:
1. Also, du musst dir das Microsoft Application Compatibility Toolkit runterladen
2. installieren
3. Compatibility Administrator als Admin ausführen
4. Rechte Maustaste auf NewDatabase(1)Untitled 1
5. Kontextmenübefehl CreateNew|Application Fix
6. Name für das Programm eingeben
7. Browse klicken und Programm-Exe auswählen
8. RunAsInvoker abhaken und weiter klicken
9. Nichts ändern und fertigstellen klicken
10. Schritte 4-9 für alle gewünschten Progs wiederholen
11. File|Save as auswählen und z.B. unter C:\Windows\sichere_programme.sbd speichern
12. Administrator-Eingabeaufforderung aufrufen
13. sdbinst C:\Windows\sichere_programme.sbd
eintippen.Wenn du diese Programme jetzt per Rechtsklick als Admin startest, bleiben weitere Rückfragen aus. (Um nicht immer Rechtsklickk machen zu müssen, kann man das auch im Eigenschaften-Dialog der Verknüpfung machen (Glaub ich jedenfalls))
Schreib bitte, ob du damit was anfangen konntest
-
@unreg
danke erstmal für die Mühe, ich werde mir das auf jedenfall mal anschauen, für meinen konkreten Fall ist das glaub ich nicht so gut geeignet. Mein Ziel ist es ein Programm zu schreiben das im Autostart Ordner ausgeführt wird. Das Pogramm sollte eigentlich beim Computerstart einige Regestry Schlüssel zurücksetzten, das einfachste währe gewesen die *.reg Dateien auszuführen. Jetzt scheint es aber so, daß ich die Regestryschlüssel von meinem Programm direkt eintragen lasse.