WindowsIdentity.GetCurrent () возвращает SYSTEM при запуске из настраиваемого действия - PullRequest
2 голосов
/ 03 мая 2010

У меня есть проект установки (работающий в Windows 7), который запускает пользовательское действие при коммите, которое запускает только что установленное приложение. Во время запуска этого приложения у меня есть метод, который проверяет имя текущего пользователя, чтобы выполнить некоторую аутентификацию. При запуске из этого пользовательского действия я получаю «NTAUTHORITY \ SYSTEM» вместо «DOMAIN \ USER»

Обновление: Эта ссылка из принятого ответа и решила мою проблему:

Как настроить MSI в проекте установки / развертывания Visual Studio?

Ответы [ 2 ]

3 голосов
/ 03 мая 2010

Вам, вероятно, следует прочитать значение свойства USERNAME MSI:

string username = Session.Property("USERNAME");

Выше будет работать в режиме немедленного выполнения; однако в отложенном режиме вам придется явно передать имя пользователя с помощью свойства CustomActionData вашему пользовательскому действию. Подробности смотрите здесь:

Совет: MSI Properties и Deferred Исполнение

ОБНОВЛЕНИЕ: Если вы хотите запустить установленное приложение после завершения установки, вы можете предпочесть подход, описанный в этой статье:

Запуск приложения после установки с использованием Visual Studio 2005

или используйте скрипт Аарона Стебнера для изменения MSI:

Как настроить MSI в проекте установки / развертывания Visual Studio?

0 голосов
/ 07 января 2016

Код ниже - это то, что я использовал в своем классе установщика как пользовательские действия. Это вернет текущего вошедшего в систему пользователя, а не 'NTAUTHORITY \ SYSTEM'

    IdentityReference identity = new System.Security.Principal.NTAccount(Environment.GetEnvironmentVariable("USERDOMAIN") + "\\" + Environment.GetEnvironmentVariable("USERNAME"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...