Tôi đang gặp một số sự cố khi truy cập Windows 7 Registry bằng chức năng _winreg.QueryValueEx trong mô-đun Python 2.7.3 _winreg.Làm cách nào để Mở Windows Registry có quyền ghi trong Python
Tôi đang chạy quá trình python như quản trị, và có thể tạo phím mới và giá trị như thế này:
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()
Tuy nhiên, khi tôi mở lại cùng quan trọng và cố gắng đặt giá trị, nó mang lại cho tôi một lỗi 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()
Điều thú vị là chạy quản trị, tôi không thể mở ra với KEY_WRITE hoặc KEY_ALL_ACCESS quyền truy cập:
>>> 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
Tôi muốn được quan tâm để biết làm thế nào để CreateKey mà không cần quyền admin. – User
@macdonjo: Tôi nghĩ bạn không thể làm điều này với HKLM do các ràng buộc về bảo mật, nhưng bạn có thể ghi vào một số khóa nhất định theo HKCU ('HKEY_CURRENT_USER') – TrinitronX
Vâng, thay vào đó tôi đã thực hiện CURRENT_USER. – User