Tri*_*onX 11 registry access-denied windows-7 winreg python-2.7
我 在使用Python 2.7.3 _winreg模块中的_winreg.QueryValueEx函数访问Windows 7注册表时遇到了一些问题.
我以管理员身份运行python进程,可以创建新的键和值,如下所示:
import _winreg as wreg
key = wreg.CreateKey(wreg.HKEY_LOCAL_MACHINE, "Software\\TestCompany\\TestProject")
# Create new subkey
wreg.SetValue(key, 'NewSubkey', wreg.REG_SZ, 'testsubkey')
print wreg.QueryValue(key, 'NewSubKey')
# prints 'testsubkey'
# Create new value
wreg.SetValueEx(key, 'ValueName', 0, wreg.REG_SZ, 'testvalue')
print wreg.QueryValueEx(key,'ValueName')
# prints (u'testvalue', 1)
key.Close()
Run Code Online (Sandbox Code Playgroud)

但是,当我重新打开相同的密钥并尝试设置值时,它会给我一个Access is denied错误:
key = wreg.OpenKey(wreg.HKEY_LOCAL_MACHINE, "Software\\TestCompany\\TestProject",wreg.KEY_SET_VALUE)
wreg.SetValue(key, 'NewSubkey', wreg.REG_SZ, 'subkey_changed')
print wreg.QueryValue(key, 'NewSubkey')
# prints 'subkey_changed'
wreg.SetValueEx(key, 'ValueName', 0, wreg.REG_SZ, 'value_changed')
Traceback (most recent call last):
File "<pyshell#43>", line 1, in <module>
wreg.SetValueEx(key, 'ValueName', 0, wreg.REG_SZ, 'value_changed')
WindowsError: [Error 5] Access is denied
print wreg.QueryValueEx(key, 'ValueName')
# still prints: (u'testvalue', 1)
key.Close()
Run Code Online (Sandbox Code Playgroud)
有趣的是,以管理员身份运行,我无法使用KEY_WRITE或KEY_ALL_ACCESS访问权限打开:
>>> key = wreg.OpenKey(wreg.HKEY_LOCAL_MACHINE, "Software\\TestCompany\\TestProject",wreg.KEY_WRITE)
Traceback (most recent call last):
File "<pyshell#47>", line 1, in <module>
key = wreg.OpenKey(wreg.HKEY_LOCAL_MACHINE, "Software\\TestCompany\\TestProject",wreg.KEY_WRITE)
WindowsError: [Error 5] Access is denied
>>> key = wreg.OpenKey(wreg.HKEY_LOCAL_MACHINE, "Software\\TestCompany\\TestProject",wreg.KEY_ALL_ACCESS)
Traceback (most recent call last):
File "<pyshell#48>", line 1, in <module>
key = wreg.OpenKey(wreg.HKEY_LOCAL_MACHINE, "Software\\TestCompany\\TestProject",wreg.KEY_ALL_ACCESS)
WindowsError: [Error 5] Access is denied
Run Code Online (Sandbox Code Playgroud)
Iva*_*Yan 22
我通过这样做解决了这个问题:
key = wreg.OpenKey(wreg.HKEY_LOCAL_MACHINE, "Software\\TestCompany\\TestProject",0, wreg.KEY_ALL_ACCESS)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18422 次 |
| 最近记录: |