2016-05-31 42 views
0

如何在windows上獲取系統環境變量?隨着下面的代碼我只有得到用戶環境變量:Python在windows上獲取系統環境變量

os.environ['PATH'] 

或者這個返回相同的:

os.getenv('PATH') 

謝謝!

+1

http://stackoverflow.com/questions/4906977/how-to-access-environment-variables-from-python – iHowell

+0

的可能的複製http://stackoverflow.com/questions/4906977/how-to -access-environment-variables-from-python – iHowell

+1

您僅限於受當前用戶級別限制的環境變量。這意味着您需要以管理員身份運行以獲取特定路徑,某些路徑僅對用戶是本地的。 – Torxed

回答

0

根據(刪除)的評論,我找到了解決方案。如果python腳本是由用戶運行的,而不是由管理員運行,則應從註冊表中讀取系統環境變量。

import winreg 

reg_path = r'SYSTEM\CurrentControlSet\Control\Session Manager\Environment' 

reg_key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, reg_path) 

system_environment_variables = winreg.QueryValueEx(reg_key, 'Path')[0] 
+0

)'os.environ ['PATH']'只返回用戶'PATH'當你使用一個已加載的配置文件登錄時,你的用戶'PATH'被追加到系統'PATH'上,由系統資源管理器及其所有子進程繼承該系統 – eryksun

+0

我運行'os.environ [ PATH']'在我的Win7 x64上與我的用戶,我只有用戶環境變量。我不知道我做錯了什麼,但我的用戶PATH只有3個變量,我的系統路徑有30多,python只返回3.在python中,我無法通過'subprocess'運行外部命令,因爲python沒有看到系統PATH,所以我必須讀取系統PATH的註冊表,並在'subprocess .Popen()'。現在我可以運行我的命令了。 – ragesz

+0

你得到了哪些變量?它們是否與用戶v相同'HKEY_CURRENT_USER \ Environment'中的可變參數?如果cmd.exe在空白環境下運行,它會設置3個默認變量:'COMSPEC','PATHEXT'和'PROMPT'。默認值與用戶的環境變量無關。 – eryksun

相關問題