2016-05-20 4 views
0

У меня есть проект «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. Это хорошо знать (поэтому я не трачу больше времени на поиск). Я, вероятно, попрошу системных администраторов для выделенной системной учетной записи запустить мой сервис. Не идеально, но это будет работать.

+0

Я не уверен, что есть способ сделать это через AI (одна из моих групп показывает пользователя SYSTEM, но это группа MSSQL, и я еще не потрудился проверить SID), но вы определенно могли бы напишите настраиваемое действие (я бы рекомендовал C#) для его обработки. Богдан хорошо согласен с ответом, но вы также можете захотеть попасть на их форумы, поскольку они регулярно там тоже отвечают. – adamdc78

+0

Извините, но я должен что-то упустить. Зачем вам нужны конкретные разрешения?Разве учетная запись LocalSystem по умолчанию не имеет привилегий, достаточных для доступа к ресурсам машины? http://stackoverflow.com/questions/510170/the-difference-between-the-local-system-account-and-the-network-service-acco –

+0

Кроме того, если вы хотите, чтобы эти разрешения просто записывались в папку установки , вы должны вместо этого подумать об установке/приложении. Прежде всего, в папке установки вы не должны писать материал во время выполнения приложения, для этого у вас есть папки AppData и UserData. Или, если вам действительно нужно писать в папке установщика, выберите местоположение по умолчанию, которое не требует специальных разрешений. –

ответ

0

Итак, в одном из моих «менее тонких» моментов отладки я перепутал две разные вещи.

Был также отсутствующий файл (мой файл конфигурации). Я восстановил это и изменил разрешения одновременно. Но потом я забыл вернуться и проверить, какой из них был настоящим исправлением. (Я знаю, не хорошая отладка.)

Таким образом, в Access отказано в ошибке из-за отсутствующего файла.