如何从提升的安装程序进程向用户 windows 广播 window 消息?

How to broadcast window message from elevated installer process to user windows?

有 InstallShield 安装程序
它写入新的环境变量
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Environment
并致电
SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE,...
它还在“开始”菜单中创建快捷方式
但是在安装之后它们就不起作用了,因为程序需要新的变量。

安装程序通常会要求重启系统,
但在某些配置中它没有,这个问题是偶然发现的。

我用谷歌搜索可能是因为 UAC 和 UIPI:
安装程序运行提升并且消息不会到达用户的 windows
和开始菜单快捷方式也不知道新变量
只有在注销登录后他们才开始工作

所以问题:
是否可以向所有用户的 windows 广播?

我很惊讶,看起来很奇怪 "broadcast" 不是真正的广播
或者我错过了什么?

顺便说一句
Visual Studio 如果 UAC 打开,Spy++ 消息监视器似乎无法工作

...糟糕,我找到了解决方案
只是 运行 nircmd sysrefresh 环境

-SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, pEnv, 0, 333, pRes);
+LaunchApplication(SUPPORTDIR ^ "nircmd.exe", "sysrefresh environment", SUPPORTDIR, SW_HIDE, INFINITE, LAAW_OPTION_WAIT);

所以 InstallShield 有问题
已关闭。