【发布时间】:2009-09-10 13:20:37
【问题描述】:
我想知道有没有办法刷新 HKLM 注册表项 HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer - 无需重新启动 shell。
我希望能够在不重新启动资源管理器的情况下执行此操作。有什么已知的方法可以做到这一点吗?
到目前为止,我只找到了这个东西:
RUNDLL32.EXE USER32.DLL,UpdatePerUserSystemParameters ,1 ,True
这对我的情况不起作用。
在我看来,MS 制作了 Explorer,因此它在运行时无法重新读取其配置,这看起来很疯狂)但你永远不知道。
编辑: 我尝试做的是禁用/启用通知区域(托盘)而不重新启动。 注册表项是
软件\Microsoft\Windows\CurrentVersion\Policies\Explorer\
变量:NoTrayItemsDisplay
值:1/0
编辑 2 这是应该可以工作的源代码,但在 Vista 上却不行,不能用于通知区域,不能用于我的测试虚拟对象,即 startMenu 中的 MyMusic(变量 NoStartMenuMyMusic)
#include <stdio.h>
#include <windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
DWORD dwRetVal;
int lResult = SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, (WPARAM)0,
(LPARAM)"Policy",
SMTO_ABORTIFHUNG, 5000, &dwRetVal);
printf("lResult = %ld\n", lResult);
printf("dwRetVal = %ld\n", dwRetVal);
return 0;
}
我尝试了所有正常的 wparam 和 lparam 值,但没有成功。我从here获取了代码 老兄声称它有效......
但是,This article 声称代码不起作用。
更可笑的是,gpupdate 应该做这个工作。
谢谢。
【问题讨论】:
-
这不是那疯了。大多数应用程序不检查配置文件/注册表项自加载以来是否已被修改,甚至 Windows 本身也不检查。让我猜猜,您正在尝试编辑网络设置?我也找不到解决此问题的方法:S +1
-
不,我想在运行时禁用图标通知。这太疯狂了,因为 Explorer 不是“大多数应用程序”,它是一个怪异的 Shell:D