使用Python删除Windows注册表值

Deleting a Windows Registry Value with Python

我想使用Python从Windows中的注册表中删除值,但我不明白python文档中的sub_key是什么:

我有以下代码,我想使用它:

1
2
3
4
5
6
7
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')

该功能应该用作

1
del_env("SOMEKEY")

p.S我忘了提,如果我使用:

1
deleteKey(key,"")

会话中的所有环境变量都将被删除...

提前致谢,
奥兹

我的荣耀失败了:

1
2
3
4
5
6
7
8
9
: 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


使用DeleteValue代替DeleteKey作为评论中提到的@Philipp:

1
2
3
4
5
6
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')


我认为DeleteKey将父级带到您要删除的密钥,而sub_key是您要删除的密钥。 我不在Windows机器上,所以我现在无法测试它。


好,

不是Pythonic解决方案,但它的工作原理:

1
2
3
4
5
6
7
8
9
10
   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.

成功...