[英]How do i add a PATH variable in the user variables of the environment variables?
[英]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.