我想知道是否有一种方法可以刷新HKLM注册表项HKCU \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ Explorer-而无需重新启动外壳程序。

我希望能够在不重新启动资源管理器的情况下执行此操作。有什么已知的方法吗?

到目前为止,我只发现了以下内容:

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被认为可以完成这项工作。

谢谢。

最佳答案

尝试将带有wparam = 0和lparam =“ Policy”的WM_SETTINGCHANGE消息发送到任务栏,不确定是否可以使用脚本来完成

关于winapi - 更新资源管理器配置而不重新启动它,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1405269/

10-12 13:07
查看更多