私はディスク情報を通過して返す以下のコードを持っています。実行しているときに、一部のWMIプロパティがコンピューターで使用できないことに気付きました(つまり、FirmwareRevision)。
したがって、コードを実行すると、VSがクラッシュして「見つかりません」と表示されます。「利用不可」と表示されていないオブジェクトの出力で、例外キャッチをどのように状態に設定するかについてのアイデア。
私は例外キャッチについて読んでいますが、これまでの私の素人的な方法は、使用したい例外を明示的に定義することです...このプログラムは、さまざまなサーバーの負荷で実行することを目的としているため、任意の1つのサーバーがWMIオブジェクトをインテリジェントに把握できることを期待しています持っていない可能性があります。
コードは以下のとおりで、現在は失敗します(最後の行):
"lblFirmware.Text ="ファームウェア: "+ moDisk ["FirmwareRevision "]。ToString();"
コード:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Management;
using Microsoft.Win32;
namespace diskdrive_info
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//Get all the disk drives
ManagementObjectSearcher mosDisk = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
// Loop through each object (disk) retrieved by WMI
foreach (ManagementObject moDisk in mosDisk.Get())
{
cmbHdd.Items.Add(moDisk["Model"].ToString());
}
}
private void cmbHdd_SelectedIndexChanged(object sender,EventArgs e)
{
ManagementObjectSearcher mosDisks = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive WHERE Model = '" + cmbHdd.SelectedItem + "'");
foreach (ManagementObject moDisk in mosDisks.Get())
{
lblType.Text = "Type: " + moDisk["MediaType"].ToString();
lblModel.Text = "Model: " + moDisk["Model"].ToString();
lblCapacity.Text = "Capacity: " + moDisk["Size"].ToString();
lblPartitions.Text = "Partitions: " + moDisk["Partitions"].ToString();
lblSectors.Text = "Sectors: " + moDisk["SectorsPerTrack"].ToString();
lblSignature.Text = "Signatures: " +moDisk["Signature"].ToString();
lblFirmware.Text = "Firmware: " +moDisk["FirmwareRevision"].ToString();
}
}
}
}