Как установить службу Windows, которая запускается как администратор?

StackOverflow https://stackoverflow.com/questions/3755051

Вопрос

Я написал установщик, который устанавливает службу Windows (A), которая должна запускаться / остановить другую услугу (B). Однако, когда попытка начать / остановить B, я получаю это исключение:

System.invalidOperationException: не может открыть службу MyService на компьютере ». '. ---> System.comPonentModel.Win32Exception: доступ запрещен

Установщик устанавливает службу в качестве локального обслуживания, и она запрашивает права администратора через всплывающую всплывающую связь, которую я предоставляю. Я также добавил файл app.manifest на службу, который установлен для запроса прав администратора:

Тем не менее, я все еще получаю эту ошибку.

Вот как я начинаю службу (остановка одинакова, кроме его вызовов STOP, конечно):

using (Mutex mutex = new Mutex(false, "MyServiceLock"))
{
    mutex.WaitOne();

    if (ServiceExists(serviceName) == true)
    {
        using (ServiceController serviceController = new ServiceController(serviceName, "."))
        {
            serviceController.Start(); // this line throws the exception
        }
    }

    mutex.ReleaseMutex();
}

Почему может получить доступ к этой услуге?

Это было полезно?

Решение

Сервис не может задать высоту UAC. Звучит мне, что uac Proment вы описываете, на самом деле запрашиваются установщиком, а не услугой. Услуги обычно работают с очень привилегированным счетом уже, LocalSystem по умолчанию. Убедитесь, что вы настраиваете службу для использования такой привилегированной учетной записи, а не ограниченная учетная запись пользователя.

Другие советы

Как быстрый тест, если вы открыте services.msc И проверьте свой сервер, чтобы «запустить как» и введите свои учетные данные, ошибка уходит? Может быть, в том, что Localservice не имеет доступа к остановке других услуг. Предоставление разрешения на uac быстрее, вероятно, только позволяло установить сервис в первую очередь, не говоря уже о том, чтобы работать как администратор.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top