リモートサーバー上で実行されているWindowsサービスを照会し、マシン名、サービス名、およびステータスをデータベースに書き込むアプリケーションを使用しています。C#Windowsサービスの照会
しかし、スタートアップの種類(自動、手動、無効)も取得したいと考えています。私はスタートアップタイプのオプションがないサービスコントローラーを使用していたので、管理クラスを使用して調べ始めました。このクラスは、必要なものがすべてそろっているように見えますが、私はそれをリモートサーバに対してどのように使用するのか分かりません。サービスコントローラのために、私はこれをやっていた:
ServiceController[] services = ServiceController.GetServices(serverIP);
foreach (ServiceController service in services)
{
var machine = service.MachineName;
var displayName = service.DisplayName;
var status = service.Status;
}
は私が管理クラスのためにこれを試してみました:
は
ManagementClass class1 = new ManagementClass(serverIP + "\\" + "Win32_Service");
foreach (ManagementObject ob in class1.GetInstances())
{
var machine = serverIP;
var displayName = ob.GetPropertyValue("Description");
var name = ob.GetPropertyValue("PathName");
var startMode = ob.GetPropertyValue("StartMode");
var status = ob.GetPropertyValue("State");
}
しかし、もちろん、それは動作しませんでした。誰でも管理クラスを使用してリモートマシンからサービスを取得する方法を知っていますか?または、サービスコントローラを使用してスタートアップの種類を取得する別の方法がありますか?
また、両方を組み合わせて、管理クラスのforeach文をサービスコントローラ内に配置しようとしましたが、無限ループに陥ってしまいました。
(@ "\\" + serverIP + "\\ルート\\ cimv2:Win32_Service")これを行うと思います。サービス名のプロパティが見つからないので、私はテストを続けます。 – Matt
あなたの修正は理にかなっています。あなたは常にリモートコンピュータを\\ computernameとして参照し、@記号C#のものがなければ単一のバックスラッシュをエスケープします。 – Andy
誰かがサービス名のプロパティを知りたいのであれば、名前だけです。 – Matt