- 締切済み
.NET1.1でPING処理(C#からの変換)
VB2002+WIN2000を使用。 リモート端末へのアクセス前に起動確認処理としてPINGを使い、電源OFF時の待ち時間を減らしたいと考えています。 ○PINGの他に導通確認できる手軽なものがあるのでしたら教えてください。 PINGの処理はネットで検索した結果C#(1.1)のものでしたら発見できたため、それを利用しようと思っています。(サイトでもVBへの変換は簡単にできるとあったので^_^;) 自分なりに変換してみましたがエラーが発生してしまい原因/対応方が分かりません。 ぜひご教授下さい。よろしくお願いいたします。 (補足が必要であれば記述します。) 【元からの変更】 ・引数はなしにし、固定にしました。 ・Button1の処理に記述しました。 ・参照設定でSystem.Managementを追加しました。 【エラー】 スレッド '<名前がありません>' (0x59c) はコード 0 (0x0) で終了しました。 'System.Management.ManagementException' のハンドルされていない例外が system.management.dll で発生しました。 追加情報 : 無効なクラスです 【予想】 searcherにGetがない? 対策が分からず… ----- 変更プログラム ------ Imports System Imports System.Management Dim arg As String arg = "192.168.0.1" 'クエリ文字列の設定() Dim searcher As ManagementObjectSearcher = New ManagementObjectSearcher() searcher = New ManagementObjectSearcher("select * from Win32_PingStatus where address = '" & arg & "'") ' クエリ結果のとりだし Dim mo As ManagementObject 'エラー箇所 For Each mo In searcher.Get Dim i As Integer ' 結果のプロパティのチェックと状態の表示 If mo.Properties("StatusCode").Value = "" Or Convert.ToInt32(mo.Properties("StatusCode").Value) <> 0 Then Console.WriteLine(arg + ":稼働していません") Else Console.WriteLine(arg + ":稼働中") Console.WriteLine("IPAddress:" & mo.Properties("ProtocolAddress").Value) Console.WriteLine("ResponseTime:" & mo.Properties("ResponseTime").Value) End If Next Console.WriteLine("----------------") ------ 元プログラム(C#) ---------------------- using System; using System.Management; class PingExec { public static void Main(string[] args) { if(args.Length > 0) { foreach(string arg in args) { // クエリ文字列の設定 ManagementObjectSearcher searcher = new ManagementObjectSearcher( "select * from Win32_PingStatus where address = '" + arg + "'"); // クエリ結果のとりだし foreach( ManagementObject mo in searcher.Get() ) { // 結果のプロパティのチェックと状態の表示 if(mo.Properties["StatusCode"].Value == null || Convert.ToInt32(mo.Properties["StatusCode"].Value) != 0) { Console.WriteLine(arg + ":稼働していません"); } else { Console.WriteLine(arg + ":稼働中"); Console.WriteLine("IPAddress:" + mo.Properties["ProtocolAddress"].Value); Console.WriteLine("ResponseTime:" + mo.Properties["ResponseTime"].Value); } } Console.WriteLine("----------------"); } } } }
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- AlexSuns
- ベストアンサー率67% (78/115)
- himajin100000
- ベストアンサー率54% (1660/3060)