2011-01-11 7 views
4

Ich mag würde Werte aus der Registrierung in Windows mit Python löschen, aber ich verstehe nicht, was die sub_key in der Python-Dokumentation ist:einen Windows-Registrierungswert mit Python löschen

ich den folgenden Code haben, die ich würde gerne verwenden:

def del_env(name): 
    key = OpenKey(HKEY_CURRENT_USER, 'Environment', 0, KEY_ALL_ACCESS) 
    #SetValueEx(key, name, 0, REG_EXPAND_SZ, value) 
    DeleteKey(key, ???) # what goes where the ??? are 
    CloseKey(key) 
    SendMessage(
     win32con.HWND_BROADCAST, win32con.WM_SETTINGCHANGE, 0, 'Environment') 

Diese Funktion sollte als

del_env("SOMEKEY") 

ps verwendet werden ich vergessen zu erwähnen, wenn ich benutze:

deleteKey(key,"") 

Alle Umgebungsvariablen in der Sitzung gelöscht ...

Vielen Dank im Voraus, Oz

My Glorious fehlschlagen:

: C:\etc\venus\current\bin>python.bat 
Python 2.4.4 (#0, Jun 5 2008, 09:22:45) [MSC v.1310 32 bit (Intel)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import _winreg 
>>> key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER,r"Environment") 
>>> _winreg.DeleteKey(key,"OZ") 
Traceback (most recent call last): 
File "<stdin>", line 1, in ? 
WindowsError: [Errno 2] Das System kann die angegebene Datei nicht finden 
+2

Ich denke, Sie sollten 'DeleteValue' stattdessen verwenden. – Philipp

+0

Das '???' sollte der Unterschlüssel des zu löschenden ''Environment''-Schlüssels sein (in diesem Fall der Name der Umgebungsvariablen). – martineau

Antwort

4

Verwenden DeleteValue statt DeleteKey als @Philipp in den Kommentaren erwähnt:

def del_env(name): 
    key = OpenKey(HKEY_CURRENT_USER, 'Environment', 0, KEY_ALL_ACCESS) 
    DeleteValue(key, name) 
    CloseKey(key) 
    SendMessage(
     win32con.HWND_BROADCAST, win32con.WM_SETTINGCHANGE, 0, 'Environment') 
+0

@Sebastian, danke, deine Antwort macht den Job! – Oz123

0

Ich denke DeleteKey die Eltern auf die Takes Schlüssel, den Sie löschen möchten, und der Unterschlüssel ist der zu löschende Schlüssel. Ich bin nicht auf einer Windows-Maschine, also kann ich es jetzt nicht testen.

+0

Was meinst du mit dem Elternschlüssel? – Oz123

+0

Ich meine den Schlüssel, der der Schlüssel ist, den Sie löschen möchten. –

-1

OK,

Not A Pythonic Lösung, aber es funktioniert:

C:\Documents and Settings\admin>reg add "%REGISTRY_KEY%\Environment" /v AME /t 
    REG_EXPAND_SZ /d "%AME%" /f 


    #REG DELETE KeyName [/v ValueName | /ve | /va] [/f] 

    C:\Documents and Settings\admin>reg delete "%REGISTRY_KEY%\Environment" /v AME 
    /f 

    Der Vorgang wurde erfolgreich ausgeführt. 

Erfolg ...