【问题标题】:Win32_Account class strange behaviourWin32_Account 类的奇怪行为
【发布时间】:2023-03-23 01:28:01
【问题描述】:

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

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 是因为所有的域用户。我选择了只显示本地用户,但同样的问题。

【问题讨论】:

    标签: c# winforms wmi user-accounts


    【解决方案1】:

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

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

    // 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())
        {
            ...
        }
    }
    

    代码完全按照您的要求执行。现在,为什么你连接了这样的事件处理程序?想想当所选索引发生变化时您实际上想要实现什么。您真的只想找到 single 选定的用户吗?如果是这样,想必您只需要更改您在ManagementObjectSearcher 中使用的查询,然后找到单个结果而不是遍历所有结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-10
      • 2016-08-13
      • 2016-02-29
      • 2014-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多