2017-03-05 5 views
1

Ich versuche, einen neuen Wert unter dem Schlüssel Run in Windows 7 zu erstellen. Ich verwende Python 3.5 und ich habe Probleme beim Schreiben auf den Schlüssel. Mein aktueller Code erstellt einen neuen Schlüssel unter dem Schlüssel, den ich versuche, die Werte von zu ändern.Neuen Wert in der Registrierung erstellen Schlüssel mit Python ausführen?

from winreg import * 

aKey = OpenKey(HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Run", 0, KEY_ALL_ACCESS) 

SetValue(aKey, 'NameOfNewValue', REG_SZ, '%windir%\system32\calc.exe') 

Als ich das laufen, macht es einen Schlüssel unter dem Run und nennt es „NameOfNewKey“ und setzt dann den Standardwert auf dem calc.exe Pfad. Ich möchte jedoch dem Run-Schlüssel einen neuen Wert hinzufügen, damit Calc.exe beim Start ausgeführt wird.

EDIT: Ich habe die Antwort gefunden. Es sollte die SetValueEx-Funktion anstelle von SetValue sein.

+0

Haben Sie versucht es zunächst manuell hinzufügen, sicherstellen, dass es funktioniert? Dann versuchen, das in Code umzuwandeln? –

+0

Dies funktioniert nicht wie vorgesehen. Selbst wenn ich einen Wert unter dem Run-Schlüssel hinzufüge, wird nur ein neuer Schlüssel unter dem Run-Schlüssel erstellt, anstatt einen Wert unter dem Run-Schlüssel zu machen. Bearbeiten - Gefunden die Antwort, in OP einfügen. – sqlsqlsql

+0

können Sie Ihren vollständigen Code-Ausschnitt einfügen, um sicherzustellen, dass jeder, der in Zukunft hierher kommt, ein funktionierendes Codebeispiel zum Betrachten hat? Vielen Dank –

Antwort

0

Hier ist eine Funktion, die einen Runkey setzen/löschen kann.

Code:

def set_run_key(key, value): 
    """ 
    Set/Remove Run Key in windows registry. 

    :param key: Run Key Name 
    :param value: Program to Run 
    :return: None 
    """ 
    # This is for the system run variable 
    reg_key = winreg.OpenKey(
     winreg.HKEY_CURRENT_USER, 
     r'Software\Microsoft\Windows\CurrentVersion\Run', 
     0, winreg.KEY_SET_VALUE) 

    with reg_key: 
     if value is None: 
      winreg.DeleteValue(reg_key, key) 
     else: 
      if '%' in value: 
       var_type = winreg.REG_EXPAND_SZ 
      else: 
       var_type = winreg.REG_SZ 
      winreg.SetValueEx(reg_key, key, 0, var_type, value) 

ein:

set_run_key('NameOfNewValue', '%windir%\system32\calc.exe') 

zu entfernen:

set_run_key('NameOfNewValue', None) 

So importieren win32 Libs:

try: 
    import _winreg as winreg 
except ImportError: 
    # this has been renamed in python 3 
    import winreg 
Verwandte Themen