如何在 Python 中打开具有写入权限的 Windows 注册表 [英] How do I Open Windows Registry with write access in Python
本文介绍了如何在 Python 中打开具有写入权限的 Windows 注册表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在使用 或 KEY_ALL_ACCESS 访问权限:
>>>键 = wreg.OpenKey(wreg.HKEY_LOCAL_MACHINE,软件\TestCompany\TestProject",wreg.KEY_WRITE)回溯(最近一次通话最后):<module> 中的文件<pyshell#47>"第 1 行键 = wreg.OpenKey(wreg.HKEY_LOCAL_MACHINE,软件\TestCompany\TestProject",wreg.KEY_WRITE)WindowsError:[错误 5] 访问被拒绝>>>键 = wreg.OpenKey(wreg.HKEY_LOCAL_MACHINE,软件\TestCompany\TestProject",wreg.KEY_ALL_ACCESS)回溯(最近一次通话最后):<module> 中的文件<pyshell#48>"第 1 行键 = wreg.OpenKey(wreg.HKEY_LOCAL_MACHINE,软件\TestCompany\TestProject",wreg.KEY_ALL_ACCESS)WindowsError:[错误 5] 访问被拒绝
解决方案
我解决了这个问题:
key = wreg.OpenKey(wreg.HKEY_LOCAL_MACHINE, "Software\TestCompany\TestProject",0, wreg.KEY_ALL_ACCESS)
I'm having some problems accessing the Windows 7 Registry with the _winreg.QueryValueEx function in the Python 2.7.3 _winreg module.
I am running the python process as Administrator, and can create new keys and values like this:
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()
However, when I re-open the same key and try to set the value, it gives me an Access is denied
error:
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()
Interestingly, running as Administrator, I cannot open with KEY_WRITE or KEY_ALL_ACCESS access rights:
>>> 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
解决方案
I solved the problem by doing:
key = wreg.OpenKey(wreg.HKEY_LOCAL_MACHINE, "Software\TestCompany\TestProject",0, wreg.KEY_ALL_ACCESS)
这篇关于如何在 Python 中打开具有写入权限的 Windows 注册表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文