2012-02-18 2 views
2

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

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

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

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

ответ

2

Я не уверен, но если вы не можете сделать это с помощью классов, встроенных в .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 где-нибудь в классе, который вы используете (я не знаю, какой класс это потому, что u didnt написал).

+0

Этого было достаточно, чтобы указать мне в правильном направлении и, в частности, [link] (http://stackoverflow.com/questions/3141308/how-do-retrieve-the-username-that-a-windows- сервис-это-обкатка под) – David