Проблема идентификации пользовательских действий установщика MSI - PullRequest
2 голосов
/ 29 декабря 2010

Я создаю пользовательское действие, которое выполняет сценарий в базе данных. Проблема заключается в том, что подключения использует встроенную защиту, поэтому при попытке открыть подключение я получаю сообщение об ошибке: Ошибка входа в систему для пользователя 'Domain \ ComputerName $'.

Когда я проверяю личность в пользовательском действии (используя System.Security.Principal.WindowsIdentity.GetCurrent()), я всегда получаю «NT AUTHORITY \ SYSTEM» но я использую установщик под моей учетной записью, у которой достаточно прав доступа к базе данных.

Как мне запустить пользовательское действие под реальным пользователем, запустив MSI-файл, или решить эту проблему любым другим способом?

Ответы [ 2 ]

2 голосов
/ 30 декабря 2010

Ну, есть простые решения для этого, но, возможно, это не подходит для всех случаев.

Если вы установите свойство проекта InstallAllUsers в значение true, установщик будет работать с "NT AUTHORITY \ SYSTEM" Учетная запись, но если вы установите ее в значение false, она будет работать с удостоверением пользователя, который запускает установщик.

Установка его в false работала для меня, даже если я устанавливалслужба Windows, которая работает для всех пользователей.

1 голос
/ 29 декабря 2010

Короткий ответ: вам нужно

  1. Включить «олицетворение» для настраиваемого действия.
  2. (В системах Windows Vista и Windows 7) запустить вся установка в «повышенном» контексте (т. Е. «Запуск от имени администратора»).

Способ выполнения # 1 зависит от того, что вы используете для создания установочного пакета.Чтобы легко справиться с # 2, я использую загрузчик (созданный с помощью Bootstrapper Manifest Generator ), который настроен на запуск с повышенными правами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...