Как получить учетные данные для входа в службу Windows - PullRequest
2 голосов
/ 18 февраля 2012

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

Что я хочу сделать, это:

If(WinService.logonCredentials == LocalUser)
   WinService.logonCredentials = new logonCredentials;

Есть ли класс, к которому я могу получить доступ, который даст мне необходимые данные и / или, возможно, другие настройки для службы Windows?

1 Ответ

2 голосов
/ 18 февраля 2012

Я не уверен, но если вы не можете сделать это с помощью классов, встроенных в .net, вероятно, единственный способ - использовать WMI.

Это класс Win32Service:

    class Win32_Service : Win32_BaseService
    {
      boolean  AcceptPause;
      boolean  AcceptStop;
      string   Caption;
      uint32   CheckPoint;
      string   CreationClassName;
      string   Description;
      boolean  DesktopInteract;
      string   DisplayName;
      string   ErrorControl;
      uint32   ExitCode;
      datetime InstallDate;
      string   Name;
      string   PathName;
      uint32   ProcessId;
      uint32   ServiceSpecificExitCode;
      string   ServiceType;
      boolean  Started;
      string   StartMode;
      string   StartName;
      string   State;
      string   Status;
      string   SystemCreationClassName;
      string   SystemName;
      uint32   TagId;
      uint32   WaitHint;
    };

И это то, что вы спрашиваете:

        string   StartName;

Я использовал PowerShell для получения данных об услуге «Удаленный рабочий стол» на своем ноутбуке, и я получил больше таких данных (некоторые из этих данных являются свойствами Win32_BaseService, а не Win32Service):

    DesktopInteract         : False
    DisconnectedSessions    : 1
    DisplayName             : Remote desktop services
    ErrorControl            : Normal
    ExitCode                : 1077
    InstallDate             :
    Name                    : TermService
    PathName                : C:\Windows\System32\svchost.exe -k NetworkService
    ProcessId               : 0
    ServiceSpecificExitCode : 0
    ServiceType             : Share Process
    Started                 : False
    StartMode               : Manual
    StartName               : NT Authority\NetworkService
    State                   : Stopped
    Status                  : OK
    SystemCreationClassName : Win32_ComputerSystem
    SystemName              : NOTEBOOK
    TagId                   : 0
    TotalSessions           : 2
    WaitHint                : 0

Я не могу помочь с WMI в C #. Возможно, вы найдете свойство StartName где-то в классе, который вы используете (я не знаю, что это за класс, потому что вы не написали).

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