Существует инсталлятор InstallShield
записывает новые переменные среды
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment
и называет
SendMessageTimeout (HWND_BROADCAST, WM_SETTINGCHANGE, ...
также создает ярлыки меню Start
, но сразу же после установки они не работают, потому что программа нуждается в новых переменных.
установщик обычно просит перезагрузки системы,
но в некоторых конфигурациях это не так, и эта проблема была обнаружена случайно.
я гугл, что, вероятно, причина в UAC и UIPI:
установки выполняется возвышенной и сообщение не приходит к окнам пользователя
и запуску ярлыки в меню также не знают о новом переменных
только после logoff- logon они начинают работать
Итак, вопрос:
Можно ли транслировать все окна пользователя?
Я был удивлен, странно, что «трансляция» не является реальной трансляцией
или я что-то пропустил?
BTW
, кажется, что Visual Studio Spy ++ монитор сообщение не работает, если UAC включен
Как передать сообщение окна с повышенного процесса установки в окна пользователя?
0
A
ответ
0
... упс, я нашел решение
просто запустить 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
закрыто.
обновление: повышенный cmdow.exe печатает все окна пользователя - почему трансляция не работает? – bdimych