C# 查找服务设置为";的帐户;以“身份登录”;

C# 查找服务设置为";的帐户;以“身份登录”;,c#,.net,windows-services,C#,.net,Windows Services,如何找到服务设置为在其下运行的用户帐户() 与此不同,此代码不能从服务本身内部运行,并且服务可能未运行 该类有用于获取状态的有用方法,但没有“以用户身份登录”的方法。如何使用WMI和带有StartName参数的Win32\u服务类 可能会有帮助。这是我知道的唯一方法,我在四处寻找并测试了它,它工作正常。确保您使用的是服务名称而不是显示名称,您还需要添加对System.Management的引用 string serviceName = "aspnet_state"; SelectQuery q

如何找到服务设置为在其下运行的用户帐户()

与此不同,此代码不能从服务本身内部运行,并且服务可能未运行


该类有用于获取状态的有用方法,但没有“以用户身份登录”的方法。

如何使用WMI和带有
StartName
参数的
Win32\u服务


可能会有帮助。

这是我知道的唯一方法,我在四处寻找并测试了它,它工作正常。确保您使用的是服务名称而不是显示名称,您还需要添加对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"]));
    }
}
这将完成你的工作

 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