Найти учетную запись службы, установленной на «Войти как» - PullRequest
7 голосов
/ 27 октября 2009

Как узнать учетную запись пользователя ( Локальная система / Пользователь и т. Д. ), под которой установлена ​​служба («Войти в систему»)?

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

Класс System.ServiceProcess.ServiceController имеет полезные методы для получения статуса, но не для пользователя «Вход в систему».

Ответы [ 3 ]

14 голосов
/ 27 октября 2009

Это единственный способ, о котором я знаю, я нашел его, осмотрел и проверил, он работает. Убедитесь, что вы используете имя службы, а не ее отображаемое имя, вам также необходимо добавить ссылку на System.Management

string serviceName = "aspnet_state";

SelectQuery query = new System.Management.SelectQuery(string.Format(
    "select name, startname from Win32_Service where name = '{0}'", serviceName));
using (ManagementObjectSearcher searcher =
    new System.Management.ManagementObjectSearcher(query))
{
    foreach (ManagementObject service in searcher.Get())
    {
        Console.WriteLine(string.Format(
            "Name: {0} - Logon : {1} ", service["Name"], service["startname"]));
    }
}
2 голосов
/ 27 октября 2009

Как насчет использования WMI и класса Win32_Service с параметром StartName?

Эта статья может помочь.

0 голосов
/ 25 апреля 2016

Это сделает вашу работу

 Get-WMIObject Win32_Service | Where-Object {$_.startname -ne "localSystem" }| Where-Object {$_.startname -ne "NT AUTHORITY\LocalService" } |Where-Object {$_.startname -ne "NT AUTHORITY\NetworkService" } |select startname, name 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...