Запустите exe после установки msi, но используя текущие права пользователя - PullRequest
6 голосов
/ 09 октября 2009

Я использую Visual Studio 2008 для сборки установочного пакета MSI. В рамках установки у меня есть множество пользовательских действий. В пользовательском действии OnAfterInstall я пытаюсь запустить исполняемый файл, который развертывается при установке. Exe запускается нормально, но работает в контексте безопасности NT AUTHORITY \ SYSTEM (то есть с повышенными привилегиями, предоставленными процессу установщика Windows). Мне действительно нужен exe для запуска в контексте безопасности текущего вошедшего в систему пользователя, который запустил установку в первую очередь. Кто-нибудь знает, как запустить исполняемый файл, чтобы он работал в этом «сокращенном» контексте. Я действительно хочу избегать необходимости запрашивать у пользователя его учетные данные, если это возможно.

1 Ответ

2 голосов
/ 08 сентября 2010

Вам необходимо использовать API служб удаленных рабочих столов: http://msdn.microsoft.com/en-us/library/aa383464%28v=VS.85%29.aspx. Доступно начиная с WinXP.

Этот API позволяет запускать ваше приложение в контексте любой учетной записи пользователя, вошедшего в систему. Вы должны работать как СИСТЕМА, чтобы иметь возможность использовать его. И вы. Например, вы можете перечислить сеансы с помощью WTSEnumerateSessions, затем взять токен пользователя с помощью WTSQueryUserToken и запустить приложение с использованием этого токена.

...