gpt4 book ai didi

c# - 如何检索运行 Windows 服务的用户名?

转载 作者:可可西里 更新时间:2023-11-01 07:42:45 27 4
gpt4 key购买 nike

给定一个服务名称,我想检索它在其下运行的用户名(即在服务属性窗口的“登录”选项卡中显示的用户名)。

ServiceController 类中似乎没有任何东西可以检索此基本信息。 System.ServiceProcess 中没有任何其他内容看起来也暴露了此信息。

对此是否有托管解决方案,或者我是否必须下降到较低级别?

最佳答案

使用 WMI,通过 System.Management,您可以尝试以下代码:

using System;
namespace WindowsServiceTest
{
class Program
{
static void Main(string[] args)
{
System.Management.SelectQuery sQuery = new System.Management.SelectQuery(string.Format("select name, startname from Win32_Service")); // where name = '{0}'", "MCShield.exe"));
using (System.Management.ManagementObjectSearcher mgmtSearcher = new System.Management.ManagementObjectSearcher(sQuery))
{
foreach (System.Management.ManagementObject service in mgmtSearcher.Get())
{
string servicelogondetails =
string.Format("Name: {0} , Logon : {1} ", service["Name"].ToString(), service["startname"]).ToString();
Console.WriteLine(servicelogondetails);
}
}
Console.ReadLine();
}
}
}

您稍后可以用您的服务名称替换注释代码,它应该只返回正在运行的服务进程的实例。

关于c# - 如何检索运行 Windows 服务的用户名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3141308/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com