現在、ネットワーク上のサーバーの稼働時間とサイズを監視するプログラムを作成しています。私は、サーバのサイズと何のスペースが残っているかを表示する際にいくつかの問題に遭遇しました。ManagementObjectクエリを二重に保存する
私のコードは、私がフリー・スペースとサイズの数字を取ると、二重の変数に入れしようとしている
public void setSpace(string ip)
{
ManagementScope scope = new ManagementScope("\\\\" + ip + "\\root\\cimv2");
scope.Connect();
ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_OperatingSystem");
SelectQuery query1 = new SelectQuery("Select * from Win32_LogicalDisk");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
ManagementObjectCollection queryCollection = searcher.Get();
ManagementObjectSearcher searcher1 = new ManagementObjectSearcher(scope, query1);
ManagementObjectCollection queryCollection1 = searcher1.Get();
foreach (ManagementObject m in queryCollection)
{
// Display the remote computer information
Console.WriteLine("Computer Name : {0}",
m["csname"]);
Console.WriteLine("Windows Directory : {0}",
m["WindowsDirectory"]);
Console.WriteLine("Operating System: {0}",
m["Caption"]);
Console.WriteLine("Version: {0}", m["Version"]);
Console.WriteLine("Manufacturer : {0}", m["Manufacturer"]);
Console.WriteLine();
}
foreach (ManagementObject mo in queryCollection1)
{
Console.WriteLine(" Disk Name : {0}", mo["Name"]);
Console.WriteLine(" Disk Size : {0}", mo["Size"]);
Console.WriteLine(" FreeSpace : {0}", mo["FreeSpace"]);
Console.WriteLine(" Disk DeviceID : {0}", mo["DeviceID"]);
Console.WriteLine(" Disk VolumeName : {0}", mo["VolumeName"]);
Console.WriteLine(" Disk SystemName : {0}", mo["SystemName"]);
Console.WriteLine("Disk VolumeSerialNumber : {0}", mo["VolumeSerialNumber"]);
Console.WriteLine();
freeSpace = freeSpace + (double)mo["FreeSpace"];
totalSpace = totalSpace + (double)mo["Size"];
}
Console.ReadLine();
}
です。
freeSpace = freeSpace + (double)mo["FreeSpace"];
totalSpace = totalSpace + (double)mo["Size"];
私はプログラムを実行しようとすると例外が発生します。
'オブジェクト参照がオブジェクトのインスタンスに設定されていません。'
なぜdownvoteですか?私は私の答えをテストし、それは働いている。テストは、ip = localhostとfreeSpaceとtotalSpaceのローカル変数で行いました。 – Ben