![](/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.