2015-10-07 36 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 

的問題是,當我打電話打開項功能,它總是提高EnvironmentError,我不能弄明白爲什麼。我檢查了路徑,這是一個有效的路徑。另外,我試圖只打開SOFTWARE密鑰,並再次失敗。

我該如何解決這個問題? 謝謝

+0

從關鍵工作讀取好嗎? –

+1

您是否在64 bii Windows計算機上使用32位Python?如果是這樣,請參閱[_Cannot在HKEY_LOCAL_MACHINE \ Software_下的註冊表寫入(http://stackoverflow.com/a/4951064/355230)。 – martineau

回答

0

我解決了這個問題。它需要管理員權限才能訪問註冊表。