Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Win32_帐户类异常行为_C#_Winforms_Wmi_User Accounts - Fatal编程技术网

C# Win32_帐户类异常行为

C# Win32_帐户类异常行为,c#,winforms,wmi,user-accounts,C#,Winforms,Wmi,User Accounts,我正在做一个小小的计算机信息工具。现在我正在做用户帐户。我用可用的用户填充一个组合框 ManagementObjectSearcher mosAccounts = new ManagementObjectSearcher("SELECT * FROM Win32_Account"); foreach (ManagementObject moUA in mosAccounts.Get()) { comboBox4.Items.Add(moU

我正在做一个小小的计算机信息工具。现在我正在做用户帐户。我用可用的用户填充一个组合框

ManagementObjectSearcher mosAccounts = new ManagementObjectSearcher("SELECT * FROM Win32_Account");

        foreach (ManagementObject moUA in mosAccounts.Get())
        {
            comboBox4.Items.Add(moUA["Name"].ToString());
        }
然后我显示它们:

private void comboBox4_SelectedIndexChanged(object sender, EventArgs e)
    {
        ManagementObjectSearcher mosAccounts = new ManagementObjectSearcher("SELECT * FROM Win32_Account");

        foreach (ManagementObject moUA in mosAccounts.Get())
        {
            lblDescriptionUA.Text = "Description: " + moUA["Description"].ToString();

            if (moUA["Domain"] != null)
            {
                lblDomain.Text = "Domain: " + moUA["Domain"].ToString();
            }

            else
                lblDomain.Text = "Domain: Not Available";

            if (moUA["InstallDate"] != null)
            {
                lblInstallDateUA.Text = "Install Date: " + moUA["InstallDate"].ToString();
            }

            else
                lblInstallDateUA.Text = "Install Date: Not Available";

            lblLocalAccount.Text = "Local Account: " + moUA["LocalAccount"].ToString();

            if (moUA["SID"] != null)
            {
                lblSID.Text = "SID: " + moUA["SID"].ToString();
            }

            else
                lblSID.Text = "SID: Not Available";

            if (moUA["SIDType"] != null)
            {
                lblSIDType.Text = "SID Type: " + moUA["SIDType"];
            }

            else
                lblSIDType.Text = "SID Type: Not Available";

            if (moUA["Status"] != null)
            {
                lblStatusUA.Text = "Status: " + moUA["Status"].ToString();
            }

            else
                lblStatusUA.Text = "Status: Not Available";
        }
    }
但每次我从组合框中选择一个用户时,标签都会变得疯狂,显示如此多的信息,并切换它。就像他们在一行中显示所有用户的信息一样。我有什么遗漏吗

附加信息:我正在工作。有很多域用户。组合框显示了它们的全部内容。Mybe是因为所有的域用户。我做了一个选项,只显示本地用户,但同样的问题

但每次我从组合框中选择一个用户时,标签都会变得疯狂,显示如此多的信息,并切换它。就像他们在一行中显示所有用户的信息一样

是-因为这正是您的代码所说的:

// Every time you select a user...
private void comboBox4_SelectedIndexChanged(object sender, EventArgs e)
{
    // Find all the information about all users...
    ManagementObjectSearcher mosAccounts =
        new ManagementObjectSearcher("SELECT * FROM Win32_Account");

    // Iterate over all those users and display it
    foreach (ManagementObject moUA in mosAccounts.Get())
    {
        ...
    }
}
代码正按照您的要求执行。现在,为什么要连接这样的事件处理程序?想想当所选索引更改时,您实际想要实现什么。你真的只想找到一个选中的用户吗?如果是这样,您可能只需要更改在
ManagementObjectSearcher
中使用的查询,然后查找单个结果,而不是迭代所有结果