.net ServiceController - Невозможно открыть службу "имя службы" на компьютере '.' - PullRequest
2 голосов
/ 22 сентября 2009

Я пытаюсь получить доступ к службе Windows (также созданной мной) через приложение WinForms, используя ServiceController :

service = new System.ServiceProcess.ServiceController("MyService")

Служба возвращается в порядке, и я могу видеть статус через myservice.Status.

Но когда я пытаюсь запустить (или остановить) его, он возвращает ошибку:

Невозможно открыть службу MyService на компьютере '.'

Я - Администратор, а сервисный процесс работает как NetworkService.

Я новичок в приложениях .net и windows и, похоже, больше не могу отлаживать его.

Ответы [ 2 ]

2 голосов
/ 29 сентября 2009

Я наконец-то смог обойти проблему, установив уровень выполнения в app.manifest (project-> new item-> application manifest)

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

Теперь управляющее приложение требует прав администратора и, следовательно, может без проблем запускать / останавливать службу.

Тем не менее, я считаю, что могу сделать это каким-то другим способом, используя олицетворение с помощью кода или, возможно, каким-то образом понизив уровень запуска службы.

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

Спасибо Дрю за руководство по отладке.

Привет

1 голос
/ 22 сентября 2009

Вы уверены, что используете имя службы , а не имя дисплея ?

Дважды проверьте, что вы локальный администратор на коробке.

Служба работает на локальной машине? Я не уверен, почему вы видите имя хоста '.'

EDIT:

Я прочитал онлайн, что следующий код выдает InvalidOperationException, если Test Service не является действительным сервисом name:

var sc = new ServiceController("Unknown Service");
string name = sc.DisplayName;

Документация для этого конструктора не указывает, что он вызовет исключение, поэтому я предполагаю, что вам нужно будет использовать имя службы. Любое исключение, которое вы видите после , на самом деле является настоящей ошибкой.

Надеюсь, это понятнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...