2009-10-27 15 views
7

Cómo encontrar la cuenta de usuario (Local System/User etc) ¿un servicio está configurado para ejecutarse en ("Iniciar sesión como")?Buscar en qué cuenta está configurado un servicio para "Iniciar sesión como"

A diferencia de similar question, este código no se puede ejecutar desde el servicio en sí y es posible que el servicio no se esté ejecutando.

La clase System.ServiceProcess.ServiceController tiene métodos útiles para obtener el estado pero no el usuario "Iniciar sesión como".

Respuesta

13

Esta es la única forma que conozco, lo encontré buscando y probándolo, funciona. Asegúrese de usar el nombre de servicio no está Nombre para mostrar, que también tendrá que añadir una referencia a 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

Esto va a hacer su trabajo

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 
Cuestiones relacionadas