查找服务设置为“登录身份”的帐户

时间:2009-10-27 16:11:48

标签: c# .net windows-services

如何查找服务设置为运行的用户帐户(Local System/User etc)(“登录为”)?

与此similar question不同,此代码无法在服务本身内运行,服务可能无法运行。

System.ServiceProcess.ServiceController类有获取状态的有用方法,但没有“登录为”用户。

3 个答案:

答案 0 :(得分:14)

这是我所知道的唯一方式,我发现它环顾四周并测试它,它的工作原理。确保使用服务名称而不是显示名称,您还需要添加对 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"]));
    }
}

答案 1 :(得分:2)

如何将WMI和Win32_Service类与StartName参数一起使用?

This article可能会有所帮助。

答案 2 :(得分:0)

这将完成你的工作

 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