gpt4 book ai didi

python - 如何在不访问注册表的情况下仅返回环境变量中的用户路径?

转载 作者:可可西里 更新时间:2023-11-01 09:28:12 25 4
gpt4 key购买 nike

这是我想要实现的:我正在编写一个基于 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com