请教关于_winreg中的DeleteValue问题

请教关于_winreg中的DeleteValue问题

我在使用DeleteValue时,它一直出现WindowsError.

[Copy to clipboard] [ - ]
CODE:
>>> from _winreg import *
>>> run=OpenKey(HKEY_LOCAL_MACHINE,r'SOFTWARE\Microsoft\Windows\CurrentVersion\Run')
>>> DeleteValue(run,'TkBellExe')

Traceback (most recent call last):
  File "<pyshell#12>", line 1, in -toplevel-
    DeleteValue(run,"TkBellExe")
WindowsError: (5, '')

python的文档是这样描述的:
DeleteValue( key, value)

Removes a named value from a registry key.
key is an already open key, or one of the predefined HKEY_* constants.
value is a string that identifies the value to remove.
我是不是使用DeleteValue哪里用错了?

用CreateKey和DeleteKey是可以正常工作的:

[Copy to clipboard] [ - ]
CODE:
>>> from _winreg import *
>>> run=OpenKey(HKEY_LOCAL_MACHINE,r'SOFTWARE\Microsoft\Windows\CurrentVersion\Run')
>>>CreateKey(run,'loveeddie')
<PyHKEY object at 0x00AFD130>
>>>DeleteKey(run,'loveddie')

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run是有TkBellExe这个值的,而且就算改为其他值,也出现同样的错误.
问题出在哪里呢?
有没谁帮忙解答下呀?
实在搞不定这个问题,在comp.lang.python看见有个老外也在问这个问题.
我可以删除Key,权限是够的,就是删除Value是出错.那个老外也是出现这种错误.
OpenKey( key, sub_key[, res = 0][, sam = KEY_READ])

看文档中对这个方法的解释,注意最后一个参数

[Copy to clipboard] [ - ]
CODE:
>>> from _winreg import *
>>> run=OpenKey(HKEY_LOCAL_MACHINE,r'SOFTWARE\Microsoft\Windows\CurrentVersion\Run', 0, KEY_WRITE)
>>> DeleteValue(run,'TkBellExe')

呵呵,我用limodou的newedit在有的机子可以注册到右键菜单,有的机子上不行。
错误是:

[Copy to clipboard] [ - ]
CODE:
[Traceback]Traceback (most recent call last):
  File "E:\wmlin\projects\newedit\mixins\Import.py", line 4659, in OnOptionRegister
    key = _winreg.OpenKey(_winreg.HKEY_CLASSES_ROOT, '*\\shell', _winreg.KEY_ALL_ACCESS)
WindowsError: [Errno 2] The system cannot find the file specified

不知道是不是一类的问题
这个倒没有注意过。不过建议使用目录浏览来打开文件。


QUOTE:
原帖由 wolfg 于 2006-3-24 09:47 发表
OpenKey( key, sub_key[, res = 0][, sam = KEY_READ])

看文档中对这个方法的解释,注意最后一个参数


[code]>>> from _winreg import *
>>> run=OpenKey(HKEY_LOCAL_MACHINE,r'SOFTW ...

BS自己,解决问题有些浮躁,应该仔细读读文档,当时看见能delete key,所以认为也应该能delete value.
呵呵,差点就email给那老外问他怎么解决的了.
必须得带上最后的2个参数才能对value操作.