2016-05-31 109 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