_winreg und neuen Schlüssel erstellen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

Ich würde gerne mit dem Modul _winreg einen Schlüssel erstellen, um ein Programm autostarten zu lassen. Bis jetzt bin ich immer so vorgegangen:

Code: Alles auswählen

myreg = 'reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "mein_programm.exe" /t "REG_SZ" /d '
	
reg_command = myreg + '"'+MeineExe+'"'+' /f'
os.system (reg_command)
Allerdings funtzt das nicht mehr unter windows 2000 :( wie kann ich denn diesen Schlüssel mit der _winreg vernünftig setzen?
Da ich aus der Unix Welt komme, kenne ich mich mit der Registry nicht besonders aus. Habe aus diesem Forum eben nur erfahren, welchen Schlüssel man setzen muß, um einen Autostarteintrag zu erstellen.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Ich habe leider kein win2k da, aber sieh mal in der Registry nach, ob HKCU überhaupt noch existiert, der ist soweit ich weiß in HKEY_CURRENT_USER umbenannt wurden, also prüf mal ob es den deinen Pfad in der Registry noch gibt. Ansonsten wird sich wohl nicht viel geändert haben.

Edit: So die Registry zu manipulieren ist aber auch nicht schön
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

Edit: So die Registry zu manipulieren ist aber auch nicht schön
ja, meine ich auch. nur da ich ne schnelle lösung brauchte, habe ich es quick und dirty gemacht. weiß leider noch keine andere lösung.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Sollte auch so gehen

Code: Alles auswählen

import _winreg as winreg

if __name__ == "__main__":
    main_key = winreg.HKEY_CURRENT_USER
    sub_key = r"Software\Microsoft\Windows\CurrentVersion\Run"
    
    with winreg.OpenKey(main_key, sub_key) as key:
        winreg.SetValueEx(key, "name", 0, winreg.REG_SZ, "path")
Name und Path nat. ersetzen.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

danke schön.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Wenn noch ein Fehler "Permission denied" kommen sollte, musst du noch die Zugriffsmethode abändern zB.:

Code: Alles auswählen

with winreg.OpenKey(main_key, sub_key, 0, winreg.KEY_SET_VALUE) as key:
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

Wenn noch ein Fehler "Permission denied" kommen sollte, musst du noch die Zugriffsmethode abändern zB.:
jo, das Problem trat auf, konnte es aber dann mit Deinem Code wieder lösen.

Danke Euch
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Naja genau genommen musst der Fehler auftauchen, da der default-Parameter nur KEY_READ ist, allerdings wusste ich das bis eben auch nicht, denn :oops: ich habe es weder getestet noch je damit gearbeitet. Das entstand jetzt nur mal schnell aus der Doku http://docs.python.org/library/_winreg.html
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Antworten