2009-10-27 4 views
7

Wie finden Sie das Benutzerkonto (Local System/User etc), unter dem ein Dienst ausgeführt werden soll ("Anmelden als")?Finden Sie heraus, welches Konto für einen Dienst auf "Anmelden als" eingestellt ist

Im Gegensatz zu diesem similar question kann dieser Code nicht innerhalb des Dienstes selbst ausgeführt werden und der Dienst möglicherweise nicht ausgeführt.

Die Klasse System.ServiceProcess.ServiceController verfügt über nützliche Methoden zum Abrufen des Status, aber nicht des Benutzers "Anmelden als".

Antwort

13

Dies ist der einzige Weg, den ich kenne, ich fand es herumschauen und es getestet, es funktioniert. Stellen Sie sicher, dass Sie den Service Name verwenden nicht ist es Anzeigename, werden Sie auch einen Verweis auf 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"])); 
    } 
} 
0

Dies wird tun, um Ihren Job

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 
hinzufügen müssen
Verwandte Themen