Служба Windows - ошибка UnauthorizedAccessException при установке службы (C #) - PullRequest
0 голосов
/ 21 ноября 2018

Итак, я пытаюсь создать службу с использованием C # в Visual Studio 2017, и у меня появляется ошибка, когда я пытаюсь установить ее.

Прямо сейчас, у меня даже нет ничего в моем сервисе, я просто хочу иметь возможность установить сервис.Я создал новый проект в Visual Studio 2017 с использованием шаблона службы Windows (.NET Framework) в Visual C #> Рабочий стол Windows.Затем я добавил установщик через Правый клик> Добавить установщик.Для serviceProcessInstaller1 я установил учетную запись в LocalSystem.И ... вот и все!

Теперь я пытаюсь установить его.Я открываю командную строку (запускаюсь от имени администратора) и делаю

InstallUtil ServiceTest.exe

Все начинается гладко, но затем я получаю сообщение:

"Возникла исключительная ситуация во время установкифаза. System.UnauthorizedAccessException: Попытка выполнить несанкционированную операцию. "

Что может генерировать это сообщение?

Я погуглил и попробовал следующие вещи:

  • Убедитесь, что я запускаю командную строку от имени администратора.
  • Назначить полный доступ к папке проекта моей учетной записи администратора.
  • Сконфигурируйте разрешения на полный доступ для учетной записи администратора в журнале безопасности regedit.
  • Войдите в мой компьютер как администратор (а не обычный пользователь) и запустите его таким образом.

Несмотря на эти вещи, я продолжаю получать ту же ошибку.Что еще я могу делать не так?Буду очень признателен за некоторые советы!

Примечание: я пытаюсь установить эту службу локально на моем компьютере.

Редактировать: По запросу, вот журналы.Кстати, я назвал свой проект "FailedService", так как я не могу заставить его работать!

InstallUtil.InstallLog

Running a transacted installation.

Beginning the Install phase of the installation.
See the contents of the log file for the C:\Users\first.m.last\source\repos\FailedService\FailedService\bin\Debug\FailedService.exe assembly's progress.
The file is located at C:\Users\first.m.last\source\repos\FailedService\FailedService\bin\Debug\FailedService.InstallLog.

An exception occurred during the Install phase.
System.UnauthorizedAccessException: Attempted to perform an unauthorized operation.

The Rollback phase of the installation is beginning.
See the contents of the log file for the C:\Users\first.m.last\source\repos\FailedService\FailedService\bin\Debug\FailedService.exe assembly's progress.
The file is located at C:\Users\first.m.last\source\repos\FailedService\FailedService\bin\Debug\FailedService.InstallLog.

The Rollback phase completed successfully.

The transacted install has completed.

FailedService.InstallLog

Installing assembly 'C:\Users\first.m.last\source\repos\FailedService\FailedService\bin\Debug\FailedService.exe'.
Affected parameters are:
   logtoconsole = 
   logfile = C:\Users\first.m.last\source\repos\FailedService\FailedService\bin\Debug\FailedService.InstallLog
   assemblypath = C:\Users\first.m.last\source\repos\FailedService\FailedService\bin\Debug\FailedService.exe
Installing service Service1...
Creating EventLog source Service1 in log Application...
Rolling back assembly 'C:\Users\first.m.last\source\repos\FailedService\FailedService\bin\Debug\FailedService.exe'.
Affected parameters are:
   logtoconsole = 
   logfile = C:\Users\first.m.last\source\repos\FailedService\FailedService\bin\Debug\FailedService.InstallLog
   assemblypath = C:\Users\first.m.last\source\repos\FailedService\FailedService\bin\Debug\FailedService.exe
Restoring event log to previous state for source Service1.

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Я, наконец, смог решить эту проблему.Мне удалось докопаться до сути с помощью Process Monitor SysInternal.Я открыл программу, и он взял журналы для InstallUtil.exe.Оттуда я начал искать любые журналы, в которых было указано «Отказано в доступе».Когда я перебирал их, я заметил кое-что интересное: он пытался создать раздел реестра, но он продолжал давать сбой!

Поэтому я вошел в реестр и создал ключ с именем «ServiceTest».После этого я снова запустил команду InstallUtil, и она сработала!

Если у кого-то еще возникли проблемы, можно создать ключ с именем вашего процесса в следующем месте:

HKLM \ System \ CurrentControlSet \ Services \ EventLog \ Application \

0 голосов
/ 21 ноября 2018

Введите полный путь для установки до вашего двоичного файла службы в приглашении с повышенными правами, что может сделать.

...