4

リモート コンピューターの D ドライブから FreeSpace を取得しようとしています。

最後に、ManagementException was unhandled by user code "Not Found" が発生します

これは私にエラーを与える行です: fs = m["FreeSpace"].ToString();

これが私のコードです:

ConnectionOptions oConn = new ConnectionOptions();

oConn.Username = "username";
oConn.Password = "password";
oConn.Authority = "ntlmdomain:XXX";

ManagementScope scope = new ManagementScope("\\\\Remote_Computer\\root\\CIMV2", oConn);

scope.Connect();

ObjectQuery query = new ObjectQuery("SELECT DeviceID, VolumeName FROM Win32_LogicalDisk where DeviceID = 'D:'");

ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);

ManagementObjectCollection queryCollection = searcher.Get();

foreach (ManagementObject m in queryCollection)
{
      //error happens here
      fs = m["FreeSpace"].ToString();

      freeSpace = Convert.ToInt64(fs);
}
4

2 に答える 2

2

私は問題が何であるかを知りました。

私のクエリは間違っていました。私はそれを次のように置き換えました:

"SELECT FreeSpace FROM Win32_LogicalDisk where DeviceID = 'D:'"

そして問題は解決しました。

于 2012-09-26T14:15:23.807 に答える
0

この投稿には答えがあるはずです!!

基本的には、次の 2 つの方法のいずれかに要約されます。

GetDiskFreeSpaceEx をインポートしてドライブへのパスで使用するか、事前に接続したネットワーク ドライブで WMI を使用します。

したがって、このドライブへのネットワーク アクセスが必要です。

リモート システムを監視しようとしている場合、そのマシン上で実行され、必要な情報を継続的に収集する小さなアプリ/サービスを簡単に作成し、WCF などを使用して監視アプリケーションに提供するか、場合によっては直接接続することもできます。欲しいです。

これが役に立ったかどうか教えてください。

マックス

編集: 実際、私はあなたの質問を誤解しました。そもそも接続方法を探していると思いました。ただし、この回答をここに残しておくと、検索でこれを見つけた人が役に立つかもしれません。

于 2012-09-26T14:24:46.533 に答える