簡體   English   中英

如何在不訪問Registry的情況下僅返回環境變量中的用戶Path?

[英]How to return only user Path in environment variables without access to Registry?

這是我想要實現的:我正在編寫一個基於Python的軟件,它需要在Windows中的環境變量中將新目錄附加到PATH 為了做到這一點,我首先獲取路徑,然后修改字符串,最后使用SETX更新新的PATH。

我的問題:我嘗試了三種獲取PATH的方法(使用python或cmd),但它們都返回了USER PATH和SYSTEM PATH的組合。 這三種方法是:

os.environ['PATH']
os.system('echo %PATH%')
os.system('set PATH')

我不能接受用戶路徑和系統路徑的組合,因為這會導致新用戶PATH太長,並被截斷為1024個字符(由Microsoft限制)。 我已經閱讀了一個完全相同問題的帖子。 在這種情況下,使用Registry似乎可以解決這個問題: http//stackoverflow.com/questions/13359082/windows-batch-select-only-user-variables 解決方案建議使用

reg query HKCU\Environment /v PATH

訪問注冊表,其中用戶變量和系統變量是分開的。 但解決方案對我不起作用。 當我在commend行上運行它時,它返回“Access is denied”。 因此,我正在尋找只返回環境變量中的用戶Path而無法訪問Registry的方法。 謝謝。

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”的唯一方法。 謝謝大家。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM