![](/img/trans.png)
[英]is there better way for making path through Environment variables in c/c++?
[英]Is there a way to set the environment path programmatically in C++ on Windows?
有沒有辦法以編程方式設置全局Windows路徑環境變量(C ++)?
據我所知,putenv僅為當前應用程序設置它。
直接在注冊表中更改(HKLM\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment)
也是一個選項雖然我更喜歡API方法,如果有的話?
MSDN 說 :
調用SetEnvironmentVariable對系統環境變量沒有影響。 若要以編程方式添加或修改系統環境變量,將它們添加到HKEY_LOCAL_MACHINE \\ System \\ CurrentControlSet \\ Control \\ Session Manager \\ Environment注冊表項,然后廣播WM_SETTINGCHANGE消息,並將lParam設置為字符串“Environment”。 這允許應用程序(如shell)獲取更新。 請注意,此鍵中列出的環境變量的值限制為1024個字符。
如前所述,要更改機器級別的PATH,只需更改此注冊表項:
HLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
但您也可以通過更改此注冊表項在用戶級別設置PATH:
HKEY_CURRENT_USER\Environment\Path
您還可以通過將application \\ Path詳細信息添加到此注冊表項來在應用程序級別設置PATH:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\
沒有API - 改變注冊表就是這樣做的。 更改后的值將用於更改后開始的進程。
另外:請注意,正在運行的應用程序必須主動處理設置已更改的消息,並且許多(大多數?)不這樣做。
是的,你是對的。 您還需要在不注銷的情況下實現這些設置
使用SendMessageTimeout API將borad強制轉換消息發送到所有窗口SETTINGCHANGE,參數(LPARAM)“環境”使用SMTO_ABORTIFHUNG一段時間(5000)。
這是setX.exe隨資源Kit提供的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.