0

次のコードを使用して、サービスのパスを取得しています...

 string ServicePath = string.Format("Win32_Service.Name=\"{0}\"", "MyService");
 var WMiObject = new ManagementObject(ServicePath);
 string PathName = (string)WMiObject.GetPropertyValue("PathName");

これで、サービスが利用できない場合、wmiObject.getPropertyValue( "PathName")を呼び出すとManagementExceptionがスローされます。

私の場合、サービスが利用できない場合はハードコードされたパスを割り当てる必要があります。それを実現するにはどうすればよいですか?案内してください...

4

2 に答える 2

2
string Name = "MyService";
ServiceController service = ServiceController
                        .GetServices()
                        .Where(s => s.ServiceName == Name).FirstOrDefault();

if(null != service)
{
    // service exists
}
于 2012-05-15T16:45:29.770 に答える
0

おそらく、WMiObject.GetPropertyValue 呼び出しの前後で try ブロックを使用し、catch ブロックで定数値を割り当てることができます。

string PathName;
try
{
    PathName = (string)WMiObject.GetPropertyValue("PathName");
}
catch (ManagementException)
{
    PathName = "my constant path value";
}
于 2012-05-15T16:33:08.507 に答える