回答
從MSDN:
以編程方式添加或修改 系統環境變量,將它們添加 到
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment
註冊表項,然後 廣播WM_SETTINGCHANGE
消息 與lParam
設置爲字符串 「環境」 。這使得 應用,如外殼, 拿起你更新...
有沒有其他方式沒有使用註冊表? – Ram
@ code9215:不是,但如果你找到一個,你應該寫一個答案。 – 0xC0000022L
我所知道的唯一方法是通過註冊表。
提示全局變量在HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
和HKEY_USERS\*\Environment
中的每個用戶的全局變量,其中*
表示用戶的SID。
祝你好運。
經過我自己的獨立研究後,我發現這是最簡單的機制。請記住,在更新路徑環境變量之前存在的每個進程可能會或可能不會響應您應該在更新之後發送的消息。意思是,這種改變可能只適用於新的流程。 –
Windows中的環境變量存儲在Windows註冊表中。您可以使用「SetEnvironmentVariable」函數來實現此目的,請參閱下面鏈接中的函數文檔。
下面是一個簡單的實現(基於發表SteelBytes的MSDN指令):
bool SetPermanentEnvironmentVariable(LPCTSTR value, LPCTSTR data)
{
HKEY hKey;
LPCTSTR keyPath = TEXT("System\\CurrentControlSet\\Control\\Session Manager\\Environment");
LSTATUS lOpenStatus = RegOpenKeyEx(HKEY_LOCAL_MACHINE, keyPath, 0, KEY_ALL_ACCESS, &hKey);
if (lOpenStatus == ERROR_SUCCESS)
{
LSTATUS lSetStatus = RegSetValueEx(hKey, value, 0, REG_SZ,(LPBYTE)data, strlen(data) + 1);
RegCloseKey(hKey);
if (lSetStatus == ERROR_SUCCESS)
{
SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)"Environment", SMTO_BLOCK, 100, NULL);
return true;
}
}
return false;
}
的[編程添加目錄到Windows PATH環境變量]
- 1. C++如何在代碼中添加環境變量?
- 2. 添加環境變量linux
- 3. 在Windows 7中添加環境變量
- 4. 如何在別名中添加並執行Windows環境變量
- 5. 如何使用.bat文件在VS2010中添加環境變量?
- 6. 如何添加我添加的環境變量?
- 7. 環境變量C++
- 8. C#中的環境變量
- 9. c中的環境變量#
- 10. 如何在環境變量
- 11. 如何添加在Windows路徑任何PATH環境變量
- 12. 將環境變量添加到Hudson
- 13. 添加目錄到PATH環境變量
- 14. heroku config:push不添加環境變量
- 15. 爲Play添加環境變量!框架
- 16. 將環境變量添加到install4j
- 17. 如何將環境變量添加到VSCode中的launch.json
- 18. 在mac上,如何添加路徑到環境變量?
- 19. 在C中設置環境變量
- 20. C設置環境變量
- 21. C#設置環境變量
- 22. 在ruby中的環境變量中添加urls api鍵
- 23. 環境變量不加載
- 24. 如何通過環境變量添加記錄?
- 25. 如何添加含有`sci_mpi_mp.pc」到PKG_CONFIG_PATH環境變量
- 26. 如何添加環境變量。流浪和WSL
- 27. 如何將java環境變量添加到mac os x
- 28. 如何使用環境變量將json jar lib添加到java
- 29. 如何添加環境變量Maven的碼頭,插件
- 30. 如何向root用戶添加環境變量?
可能重複(HTTP://計算器.com/questions/1919125/programmatically-adding-a-directory-to-windows-path-environment-variable) – Joe
[在C++中設置本地環境變量]的可能重複(http://stackoverflow.com/questions/899517/ set-local-environment-variables-in-c) – Aamir
@Aamir:OP說「在Windows中」。您的鏈接僅用於正在運行的進程。另請參閱Felice Pollano的回覆,該回復使得相同(IMO錯誤)的假設。 – 0xC0000022L