1

私が構築したカスタム インストール ウィザードを介していくつかの Windows サービスを作成するためにC:\Windows\System32\sc.exe(経由で) を使用しています。System.Diagnostics.Process作成された各サービスには、1 つまたは複数のモジュールがロードされたプログラムが含まれます (ウィザードでユーザーが選択)。

このウィザードがロードされたときに、どのサービスとどのモジュールが現在インストールされているかをユーザーに通知できるようにしたいと考えています。サービスの説明 ( sc description ".....") を使用して、各サービスの一部であるモジュールを記述しました。

ただし、サービスの説明をプログラムで読み取る方法が見つかりません。それが一部ではないのは驚くべきことだと思いますSystem.ServiceProcess.ServiceController

C# 経由でサービスの説明を読み取る方法はありますか?

4

3 に答える 3

1

これを行う1つの方法を次に示します。

using System;
using System.Management;

public static string GetServiceDescription(string serviceName)
{
    using (ManagementObject service = new ManagementObject(new ManagementPath(string.Format("Win32_Service.Name='{0}'", serviceName))))
    {
        return service["Description"].ToString();
    }
}
于 2013-05-14T15:53:42.437 に答える
0

完全な例を次に示します。System.Management必要なSystem.ServiceProcess参照:

using System;
using System.Management;
using System.ServiceProcess;

var services = ServiceController.GetServices();
foreach (var service in services)
    using (var serviceObject = new ManagementObject(new ManagementPath(string.Format("Win32_Service.Name='{0}'", service.ServiceName))))
        Console.WriteLine($"{service.ServiceName} - {serviceObject["Description"]?.ToString()}..");
于 2018-03-24T19:08:10.820 に答える