У меня есть проект «Advanced Installer», который я пытаюсь использовать для установки моей службы окон «TopShelf», которую я создал.Предоставление «локальной системы» разрешений для папки установки в Advanced Installer
Я нашел место в Advanced Installer для предоставления разрешений папке установки, но я не вижу способа предоставить разрешения для учетной записи «Локальная система».
Вручную, это делается путем перехода к параметру безопасности в свойствах папки и добавлению пользователя с тем же именем, что и имя компьютера, но заканчивающееся $
. Пример MyNiceComputer$
. (О, и вам нужно выбрать опцию «Компьютеры» в области types
.)
Но нет никакого способа сделать все это в Advanced Installer. Если я сделаю такой, как MyNiceComputer$
, он просто сделает пустую запись на вкладке безопасности. (Нет прав на него, даже если я настроюсь на полный контроль.)
Кому-нибудь нужно было сделать это с помощью Advanced Installer?
Дополнительные детали:
Я устанавливаю приложение, которое работает как служба Windows. (Это консольное приложение, построенное с помощью TopShelf).
Наша политика компании, чтобы установить все наши приложения в папку, которая выглядит следующим образом:
C:\OurCompanyApps\MyApp
При создании установки, она работает нормально, но потом, когда я запустить службу Windows, я получить следующее сообщение об ошибке:
Windows could not start the MyApp service on Local Computer
Error 5: Access is denied.
Но когда я предоставить доступ к локальной системе (давая полные права управления на myNiceComputer$
на папке MyApp), то эта ошибка уходит и приложение работает нормально. Из того, что я читал, это потому, что приложение работает как локальная система.
Кажется странным, что ему нужен полный контроль, но без него он не работает. (Но, насколько я вижу, содержимое папки не изменяется).
@Bogdan Mitrache, похоже, указывает, что предоставление разрешений для локальной системы невозможно через Advanced Installer. Это хорошо знать (поэтому я не трачу больше времени на поиск). Я, вероятно, попрошу системных администраторов для выделенной системной учетной записи запустить мой сервис. Не идеально, но это будет работать.
Я не уверен, что есть способ сделать это через AI (одна из моих групп показывает пользователя SYSTEM, но это группа MSSQL, и я еще не потрудился проверить SID), но вы определенно могли бы напишите настраиваемое действие (я бы рекомендовал C#) для его обработки. Богдан хорошо согласен с ответом, но вы также можете захотеть попасть на их форумы, поскольку они регулярно там тоже отвечают. – adamdc78
Извините, но я должен что-то упустить. Зачем вам нужны конкретные разрешения?Разве учетная запись LocalSystem по умолчанию не имеет привилегий, достаточных для доступа к ресурсам машины? http://stackoverflow.com/questions/510170/the-difference-between-the-local-system-account-and-the-network-service-acco –
Кроме того, если вы хотите, чтобы эти разрешения просто записывались в папку установки , вы должны вместо этого подумать об установке/приложении. Прежде всего, в папке установки вы не должны писать материал во время выполнения приложения, для этого у вас есть папки AppData и UserData. Или, если вам действительно нужно писать в папке установщика, выберите местоположение по умолчанию, которое не требует специальных разрешений. –