Comment puis-je Ouvrir de Registre de Windows avec accès en écriture en Python
Je vais avoir quelques problèmes d'accès à la Windows 7 de Registre avec le _winreg.QueryValueEx fonction en Python 2.7.3 _winreg module.
Je suis en cours d'exécution python processus Administrateur, et peut créer de nouvelles clés et les valeurs comme ceci:
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()
Cependant, lorsque j'ai ré-ouvert la même clé et essayer de définir la valeur, il me donne une Access is denied
erreur:
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()
Il est intéressant de noter, de fonctionner comme Administrateur, je ne peux pas ouvrir avec KEY_WRITE ou KEY_ALL_ACCESS droits d'accès:
>>> 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
Je serais intéressé de savoir comment CreateKey sans privilèges d'administrateur.
Je pense que vous ne pouvez pas faire cela avec HKLM en raison de contraintes de sécurité, mais vous pouvez être en mesure d'écrire sur certaines touches sous HKCU (
Ouais, j'ai fini par faire CURRENT_USER à la place.
Je pense que vous ne pouvez pas faire cela avec HKLM en raison de contraintes de sécurité, mais vous pouvez être en mesure d'écrire sur certaines touches sous HKCU (
HKEY_CURRENT_USER
)Ouais, j'ai fini par faire CURRENT_USER à la place.
OriginalL'auteur TrinitronX | 2013-02-22
Vous devez vous connecter pour publier un commentaire.
J'ai résolu le problème en faisant:
_winreg.OpenKey(key, sub_key[, res[, sam]])
...res is a reserved integer, and must be zero. The default is zero.
OriginalL'auteur Ivan Yan