|
2007/04/24(Tue) 13:51:44 編集(投稿者)
ちゃっぴさん、返信遅くなりました。レスありがとうございます。
色々ヒントをいただき自分なりにやってみたら一応できました。
しかしもうちょっと手を加えてみたいと思っているので、私の書いたソースを一度見ていただけませんか? キレイじゃないんですが・・・
実は指定されたドライブだけの情報が知りたいのです。 もちろん下記のソースでも私の知りたいCドライブとDドライブの情報のみ取得します。 しかし、ある外部ファイルからドライブ名を指定し、その情報だけ取得したいと思っております。
ConnectionOptions options = new ConnectionOptions();
string pcpass = "\\\\" + (コンピュータ名) + "\\root\\cimv2";
ManagementScope scope = new ManagementScope(pcpass); scope.Connect();
ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_LogicalDisk");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query); ManagementObjectCollection queryCollection = searcher.Get();
foreach (ManagementObject m in queryCollection) { long size, free; try { //総容量 size = long.Parse("" + m["Size"]); //空き容量 free = long.Parse("" + m["FreeSpace"]); // 単位 textBox1.Text += m + "の容量は約" + (size / 1024 / 1024 / 1024).ToString() + "GB"; textBox1.Text += "空き容量は約" + (free / 1024 / 1024 / 1024).ToString() + "GB" + "\r\n"; textBox1.Refresh(); } catch { } }
foreachのところでManagementObject型のmのところで、if文を書いてみるとか、ObjectQuery queryのところで例えば「"SELECT * FROM Win32_LogicalDisk.DeviceID="C:""」のように(この指定の仕方は間違っていますが、この「C:」と指定しているところを動的にしたいです)指定してみるという方法はやってみたのですが、どれもやり方がわかりませんでした。
ドライブの指定は別ファイルから読み込むので、ドライブ名は動的に変化します。
何度もすいません。。。何かいい方法はありませんでしょうか?
お手数をおかけしますが、よろしくお願いいたします。
|