2015-10-07 4 views
1

Я хочу добавить сценарий к запуску Windows, написав новое значение для запуска раздела реестра. У меня есть следующий код в python.Python: Запись значения в реестр

from _winreg import * 

def setScriptAtStartup(
    value_name, 
    bAdd, 
    script_path=None 
): 
''' 
:param value_name: the name value to be used in registry 
:param bAdd: TRUE = Add, FALSE = Remove 
:param script_path: path to run at startup 
:return: 
''' 

if bAdd and script_path == None: 
    return False 

aReg = ConnectRegistry(None, HKEY_LOCAL_MACHINE) 

print r"*** Writing to SOFTWARE\Microsoft\Windows\CurrentVersion\Run ***" 
try: 
    aKey = OpenKey(aReg, r"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", 0, KEY_WRITE) 
    if(bAdd): 
     SetValueEx(aKey, value_name, 0, REG_SZ, script_path) 
    else: 
     DeleteValue(aKey, value_name) 
except EnvironmentError: 
    print "Encountered problems writing into the Registry..." 
CloseKey(aKey) 

CloseKey(aReg) 

return 

Проблема заключается в том, что, когда я вызвать функцию OpenKey, всегда поднимают EnvironmentError, и я не могу понять, почему. Я проверил путь, и он действительный. Кроме того, я попытался открыть только ключ SOFTWARE, и он снова не работает.

Что я могу сделать, чтобы исправить эту проблему? Спасибо

+0

Просматривает ли чтение из ключевой работы? –

+1

Вы используете 32-битный Python на компьютере с 64-битной Windows? Если это так, см. [_Cannot Write в реестр под HKEY_LOCAL_MACHINE \ Software_] (http://stackoverflow.com/a/4951064/355230). – martineau

ответ

0

Я решил проблему. Для доступа к реестру необходимы права администратора.

Смежные вопросы