![](/img/trans.png)
[英]How to set a environment variable for a python script on windows10?
[英]How to set windows environment variable from python
我正在編寫一個 python 程序,它需要將一個值存儲在一個持久的用戶環境變量中。 我相信這些值存儲在注冊表中。 我使用 winreg python 模塊嘗試過類似的操作。
key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, 'Environment', access=winreg.KEY_WRITE) winreg.SetValueEx(key, envVarName, 0, winreg.REG_SZ, envVarValue) winreg.Close(key)
我可以從使用注冊表編輯器中看到該值已成功設置。 但是,如果我嘗試從另一個 python 腳本或新的 powershell 實例讀取值,則在機器重新啟動之前我看不到新值。
我還需要做什么才能在不重新啟動的情況下使其他進程可以使用此值?
查看此答案給出了一個可能的答案: https://stackoverflow.com/a/61757725/18300067
os.system("SETX {0} {1} /M".format("start", "test"))
這就是我們在 Windows 服務器之一的生產環境中的做法(代碼已簡化):
import winreg
regdir = "Environment-test"
keyname = "Name-test"
keyvalue = "Value-test"
def setRegistry(regdir, keyname, keyvalue):
with winreg.CreateKey(winreg.HKEY_CURRENT_USER, regdir) as _:
with winreg.OpenKey(winreg.HKEY_CURRENT_USER, regdir, 0, winreg.KEY_WRITE) as writeRegistryDir:
winreg.SetValueEx(writeRegistryDir, keyname, 0, winreg.REG_SZ, keyvalue)
def getRegistry(regdir, keyname):
with winreg.OpenKey(winreg.HKEY_CURRENT_USER, regdir) as accessRegistryDir:
value, _ = winreg.QueryValueEx(accessRegistryDir, keyname)
return(value)
如果我首先使用以下方法設置值:
setRegistry(regdir, keyname, keyvalue)
然后檢查它是否被創建:
現在我使用 getRegistry 並在管理員模式下打開一個 PS 來運行它:
print(getRegistry(regdir, keyname))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.