这是我想要实现的: 我正在编写一个基于 Python 的软件,它需要将新目录附加到 Windows 环境变量中的 PATH。为此,我首先获取路径,然后修改字符串,最后使用 SETX 更新新的 PATH。
我的问题: 我尝试了三种方法来获取 PATH(使用 python 或 cmd),但它们都返回给我 USER PATH 和 SYSTEM PATH 的组合。这三种方法是:
os.environ['PATH']
os.system('echo %PATH%')
os.system('set PATH')
我不能接受用户路径和系统路径的组合,因为这会导致新用户路径太长,并被截断为 1024 个字符(微软的限制)。我读过一篇有完全相同问题的帖子。在这种情况下,问题似乎可以通过使用注册表来解决:http://stackoverflow.com/questions/13359082/windows-batch-select-only-user-variables .解决方案建议使用
reg query HKCU\Environment /v PATH
访问用户变量和系统变量分开的注册表。 但解决方案对我不起作用。当我在推荐线上运行它时,它会返回“访问被拒绝”。 因此,我正在寻找只返回环境变量中的用户路径而无需访问注册表的方法。谢谢。
最佳答案
import _winreg
import unicodedata
keyQ = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, 'Environment', 0, _winreg.KEY_QUERY_VALUE)
path_old, _ = _winreg.QueryValueEx(keyQ, "PATH")
#the result is unicode, need to be converted
unicodedata.normalize('NFKD', path_old).encode('ascii','ignore')
虽然我说过我想要一个无需访问注册表的答案,但事实证明这是获取用户环境变量“PATH”的唯一方法。谢谢大家。
关于python - 如何在不访问注册表的情况下仅返回环境变量中的用户路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37444803/