我想使用Python从Windows中的注册表中删除值,但我不明白python文档中的sub_key是什么:
我有以下代码,我想使用它:
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')
此功能应用作
del_env("SOMEKEY")
p.s我忘记提及,如果我使用:
deleteKey(key,"")
会话中的所有环境变量都将被删除......
提前致谢, 盎司
我的光荣失败:
: 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
答案 0 :(得分:5)
使用DeleteValue
代替DeleteKey
作为评论中提到的@Philipp:
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')
答案 1 :(得分:0)
我认为DeleteKey将父级带到您要删除的密钥,而sub_key是您要删除的密钥。我不在Windows机器上,所以我现在无法测试它。
答案 2 :(得分:-1)
好的,
不是Pythonic解决方案,但它有效:
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.
...成功