标签显示任何东西

时间:2012-09-21 10:47:27

标签: c# c#-4.0 wmi

我有下面的代码使用WMI来获取本地磁盘信息(从我正在学习的另一个站点获取)。无论如何,我创建了所有标签和组合框,并且组合工作正常 - 它在计算机上显示本地磁盘。

但是,当我尝试从WMI获取任何内容以便磁盘选择并显示它时,它会在标签旁边显示任何内容。 WMI工作得很好,因为我可以使用powershell来显示get-wmiobjects,而我带回来的两个对象实际上是通过powershell显示的东西......就在这个应用程序中没有。

有什么想法吗?

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();
            }
        }


    }
}

2 个答案:

答案 0 :(得分:1)

该foreach运行了多少次?看起来你只需要多次写入.Text属性,因为mosDisks.Get()集合中有元素。是否有可能上一次.Get()在该循环中运行它是空的还是空的?

“Type:”和“Model:”是否显示在标签中?

还可以尝试在foreach中设置断点来观看

的内容
    moDisk["MediaType"].ToString()

答案 1 :(得分:0)

大声喊叫......想通了!这是我从网络驱动器运行脚本的事实,我注意到,当我加载脚本VS出错时说从这个位置运行它有安全风险....所以我把它移动到C:驱动器和嘿-presto一切都很好!