Я пытаюсь автоматизировать установку службы Windows Service
для локального тестирования. Он встроен в .NET
... Я обычно открывал Visual Studio Command Prompt
от имени Administrator
и затем набирал команду installutil
, я хочу превратить ее в установку «одним щелчком».
Поэтому я создал следующий пакетный сценарий, чтобы убедиться, что собрана самая последняя версия, а затем поднялся, чтобы выполнить фактическую установку службы (UserAdmin - моя учетная запись администратора).
cd C:\Path\To\Solution
echo Building Service
msbuild WinService.sln /noconlog /nologo
cd C:\Path\To\Solution\bin\Debug
runas /user:UserAdmin "cmd /k C:\Windows\Microsoft.NET\Framework\v4.0.30319\installutil C:\Path\To\Solution\bin\Debug\WinService.exe"
Однако, installutil всегда выдает мне следующую ошибку:
An exception occurred during the Install phase.
System.Security.SecurityException: The source was not found, but some
or all event logs could not be searched. Inaccessible logs: Security.
Я не уверен, что это проблема конфигурации или мой пакетный скрипт неверен. Но поскольку я не могу создать каталог в папке C:\Windows\System32\, в которой запускается командная runas
, я подозреваю, что не получаю ожидаемых разрешений. Есть ли способ проверить, на каком уровне пользователя / разрешений я работаю, в командной строке?
Примечание: я хочу сделать этот скрипт как можно более универсальным. В среде, в которой я работаю, у каждого администратора есть учетная запись UserAdmin. Путь к решению также будет таким же. Этот скрипт будет добавлен в SVN, поэтому что-то вроде добавления моего конкретного пароля для учетной записи UserAdmin
будет неприемлемым.