Как (если это вообще возможно) вывести диалоговое окно согласия UAC в Vista / Win7 на передний план, когда оно свернуто на панели задач?
Например, рассмотрим следующий сценарий:
Мое приложение проверяет наличие обновлений во время запуска, оно загружает новый файл обновлений и выполняет его, предоставляя пароль администратора в Process.StartInfo, после чего мое приложение закрывается.
На этом этапе, еслипользователю или самой Windows удается потерять фокус из окна установщика MSI (возможно, нажав на рабочем столе или в другом окне), UAC видит, что окно установщика не является окном переднего плана, и, таким образом, высвечивает мигающее диалоговое окно согласия на панели задач.
Некоторые не слишком умные клиенты не понимают, что мое приложение еще не завершило обновление, и пытаются перезапустить приложение.На этом этапе я могу перечислить запущенные процессы и найти на панели задач мигающий файл license.exe.
Проблема в том, что я не могу вывести его на передний план.Я пытался вызвать ShowWindow () из user32.dll с другими параметрами (восстановить, показать, нормально), но ничего не происходит.Я проверил процесс MainWindowHandle, и он кажется нормальным (он не нулевой или отрицательный).Я предполагаю, что проблема заключается в том, что UAC создает другой сеанс рабочего стола для диалога согласия (безопасный рабочий стол).
Если пользователь может щелкнуть мигающий значок на панели задач, чтобы вывести диалог согласия на передний план,тогда также должно быть возможно смоделировать это с помощью кода?
PS!Я использую C #