HWND_BROADCAST的一个用法——修改环境变量,立即通知系统
来源:互联网 发布:支付宝服务端 php 编辑:程序博客网 时间:2024/05/17 09:32
在编程时遇到一个问题:
就是程序通过修改注册表,修改了系统的环境变量,但是不会立即生效,除非在【我的电脑】上点击右键,然后打开环境变量的窗口,点击【OK】后,才能生效。
后来用Spy++工具捕获消息,发现在点击【OK】按钮时,发送了WM_SETTINGCHANGE消息。
在网上查找原因时发现,修改了注册表之后,系统需要重启,或者向上述操作,系统才能知道注册表被修改了,之后才能生效。
如果想修改完环境变量后,立即生效,需要向系统发送消息:
wstring szParam = _T( "Environment" );
::SendMessage( HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)szParam.c_str() );
消息的第二个参数必须是_T( "Environment" )字符串,代表是环境变量发生了改变。
测试的方法:
第一步:
修改注册表:HKEY_CURRENT_USER//Environment下的TMP值改成“F:”
然后在文件夹上面的地址栏输入%TMP%,没有响应。
按照文章开始时叙述的方法执行后,在输入%TMP%,果然生效,系统的临时文件夹改为F:了。
第二步:
修改注册表:将HKEY_CURRENT_USER//Environment下的TMP值改回原来的值,
然后发送WM_SETTINGCHANGE消息,
在文件夹的地址栏上输入%TMP%, 立即生效了。
这里WM_SETTINGCHANGE的第二个参数用"Environment"字符串,这是表明是环境变量发生了改变。如果是活动桌面改变了,这个消息的第二个参数就是别的字符串。
就是程序通过修改注册表,修改了系统的环境变量,但是不会立即生效,除非在【我的电脑】上点击右键,然后打开环境变量的窗口,点击【OK】后,才能生效。
后来用Spy++工具捕获消息,发现在点击【OK】按钮时,发送了WM_SETTINGCHANGE消息。
在网上查找原因时发现,修改了注册表之后,系统需要重启,或者向上述操作,系统才能知道注册表被修改了,之后才能生效。
如果想修改完环境变量后,立即生效,需要向系统发送消息:
wstring szParam = _T( "Environment" );
::SendMessage( HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)szParam.c_str() );
消息的第二个参数必须是_T( "Environment" )字符串,代表是环境变量发生了改变。
测试的方法:
第一步:
修改注册表:HKEY_CURRENT_USER//Environment下的TMP值改成“F:”
然后在文件夹上面的地址栏输入%TMP%,没有响应。
按照文章开始时叙述的方法执行后,在输入%TMP%,果然生效,系统的临时文件夹改为F:了。
第二步:
修改注册表:将HKEY_CURRENT_USER//Environment下的TMP值改回原来的值,
然后发送WM_SETTINGCHANGE消息,
在文件夹的地址栏上输入%TMP%, 立即生效了。
这里WM_SETTINGCHANGE的第二个参数用"Environment"字符串,这是表明是环境变量发生了改变。如果是活动桌面改变了,这个消息的第二个参数就是别的字符串。
- HWND_BROADCAST的一个用法——修改环境变量,立即通知系统
- HWND_BROADCAST的一个用法——修改环境变量,立即通知系统
- HWND_BROADCAST的一个用法——修改环境变量,立即通知系统
- 使环境变量修改后立即生效的解决办法
- linux 下让修改的环境变量立即生效方法
- InstallShield修改环境变量后不能立即生效的问题
- 设置系统环境变量立即生效的VBS脚本
- 设置系统环境变量立即生效的VBS脚本
- windows7下修改环境变量立即生效
- Ubuntu修改环境变量立即生效(JDK)
- windows修改完环境变量立即生效
- 修改Windows环境变量后不重新启动使之立即生效的方法
- 修改Windows环境变量后不重新启动使之立即生效的方法
- 关于估值系统修改的通知
- 系统通知Notification的基本用法
- ubuntu系统下关于环境变量的修改
- LINUX让环境变量立即生效的方法
- LINUX让环境变量立即生效的方法
- C# ASP.net 三层架构简单例子
- Java正则表达式获取网页所有网址和链接文字
- servlet显示路径问题(myEclipse中)
- DIV 小窗体
- 移动鼠标,弹出提示信息!
- HWND_BROADCAST的一个用法——修改环境变量,立即通知系统
- sql中exist与in 的区别
- TAB ,在IE中有效果,在firefox 中无效果
- 开始
- 提示:“正在打开,请稍等...”,打开新的网址
- JS 判断字符是否含有汉字
- 达赖、班禅的由来及其转世
- 返回上一页代码
- c++ typedef 函数指针详细说明