4

services.msc からサービス実行可能パスを取得しようとしています

次のコードを書きました。

  var service = ServiceController.GetServices().Where(p => p.ServiceName.Equals("Service name", StringComparison.InvariantCultureIgnoreCase));
if (service.Any())
//get service data

サービスの実行可能パスがどこにあるのか (あるとしても) 見つかりませんでしたか?

services.msc でパスを確認できるので、コードから取得することも可能だと思います。 services.msc のサービス情報の例 (そこに実行可能パスが存在することを確認してください)

何か案は?

4

3 に答える 3

10

次のようにレジストリから取得できます。

private static string GetServiceInstallPath(string serviceName)
{
    RegistryKey regkey;
    regkey = Registry.LocalMachine.OpenSubKey(string.Format(@"SYSTEM\CurrentControlSet\services\{0}", serviceName));

    if (regkey.GetValue("ImagePath") == null)
        return "Not Found";
    else
        return regkey.GetValue("ImagePath").ToString();
}
于 2013-04-18T08:36:00.723 に答える
-1

WMI を使用して、サービス (ローカル サービスまたはリモート サービス) に関する完全な情報を取得できます。

WMI の使用方法については ( Services+ on CodePlex )のコードを確認してください。

于 2014-10-17T13:28:00.243 に答える