python RegDeleteKey错误5访问被拒绝

时间:2012-04-10 12:25:03

标签: python python-2.7 pywin32

我从Activestate.org获取了以下python配方,然后我只是添加了删除密钥的方法,但是我收到错误5,访问被拒绝,而密钥只是我刚刚创建的假密钥功能 。这是代码

## {{{ http://code.activestate.com/recipes/576860/ (r2)
import win32api
import win32con

def regquerysubkeys(handle, key, keylist=[]):

#get registry handle
    reghandle = win32api.RegOpenKeyEx(handle, key, 0, win32con.KEY_ALL_ACCESS)    
    try:
        i = 0
    #enumerates subkeys and recursively calls this function again
        while True:
            subkey = win32api.RegEnumKey(reghandle, i)
            #the following is the line I added myself
            win32api.RegDeleteKey(handle, key)


            i += 1
        #braintwister here ;-)
            regquerysubkeys(handle, key + subkey + "\\", keylist)
    except win32api.error as ex:
        #If no more subkeys can be found, we can append ourself
        if ex[0] == 259:
            keylist.append(key)
        #unexpected exception is raised
        else:
            raise
    finally:
    #do some cleanup and close the handle
        win32api.RegCloseKey(reghandle)
#returns the generated list
    print keylist

#call to the function
regquerysubkeys(win32con.HKEY_LOCAL_MACHINE, "SOFTWARE\\suga\\") 

这些是我在控制台中遇到的错误。

Traceback (most recent call last):
File "C:\EclipseWorkspaces\csse120\MMS-auto\test1.py", line 34, in <module>
regquerysubkeys(win32con.HKEY_LOCAL_MACHINE, "SOFTWARE\\suga\\")
File "C:\EclipseWorkspaces\csse120\MMS-auto\test1.py", line 14, in regquerysubkeys
win32api.RegDeleteKey(handle, key)
pywintypes.error: (5, 'RegDeleteKey', 'Access is denied.')

任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您是否有机会运行64位Windows 7?注册表的结构发生了一些变化,导致运行32位和64位程序,这些程序要求您使用不同的API进行删除。 The RegDeleteKey Win32 API documentation在某些情况下提及使用RegDeleteKeyEx。从一个主要版本的Windows到下一个版本,Win32 API很难可靠地使用。不幸的是,pywin32尽力隐藏一些令人头疼的问题,但在您有效使用它之前,它仍然需要您真正了解Win32 API及其警告。