首页 > 解决方案 > 如何从本地 Windows 服务获取“登录身份”信息

问题描述

据我所知,“ServiceController”没有从本地 Windows 服务中提取“登录身份”信息的选项。

目前我正在使用 ServiceController 为我提供服务的显示名称和当前状态,但我也想提取“登录为”信息。

我确实看到 wmic 可以使用以下方法从 startname 获取此信息:

wmic service get name,startname

目前这是我的代码:

public string GetLocalServices()
        {
            var sc = new System.ServiceProcess.ServiceController();
            ServiceController[] svcList = ServiceController.GetServices();

            try
            {
                foreach (ServiceController service in ServiceController.GetServices())
                {
                    string serviceDisplayName = service.DisplayName;
                    string status = service.Status.ToString();

                    var serviceDetails = "Display Name: " + serviceDisplayName + "Service Status: " + status + "\r\n" + "\r\n";
                    File.AppendAllText(Path.Combine(_TempPath, @"LocalServices.txt"), serviceDetails.ToString());
                }
                return "Retrieving Local Services Information complete.";
            }
            catch (Exception ex)
            {
                return string.Concat("!!! Exception: Unable to gather information on local services ", ex.Message);
            }
        }

有谁知道我如何在此类中查询 wmic 并将其附加到 serviceDetails 变量中,以便我也可以打印出 Log On As 信息?

标签: c#

解决方案


看看 microsoft 的 WMI 代码创建器工具(下载链接如下)。此工具为您提供 C# 代码片段,供您查找所需内容。

https://www.microsoft.com/en-us/download/details.aspx?id=8572

单击链接以查看该工具如何工作的图像。 WMI 代码创建者


推荐阅读