Удаление значения реестра Windows с помощью Python - PullRequest
4 голосов
/ 11 января 2011

Я хотел бы удалить значения из реестра в Windows, используя Python, но я не понимаю, что такое sub_key в документации по python:

У меня есть следующий код, который я хотел бы использовать:

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")

ps. Я забыл упомянуть, если я использую:

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

Ответы [ 3 ]

5 голосов
/ 11 января 2011

Используйте 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')
0 голосов
/ 11 января 2011

ОК,

Не решение 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.

Успех ...

0 голосов
/ 11 января 2011

Я думаю, DeleteKey берет родительский ключ к ключу, который вы хотите удалить, а sub_key - это ключ, который вы хотите удалить. Я не на Windows-машине, поэтому не могу сейчас ее проверить.

...