0

ちょっとしたコンピュータ情報ツールをやっています。現在、ユーザーアカウントを作成しています。利用可能なユーザーをコンボボックスに入力します。

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";
        }
    }

しかし、コンボボックスからユーザーを選択するたびに、ラベルが狂ってしまい、非常に多くの情報が表示され、切り替えられます。すべてのユーザーに関する情報を連続して表示しているようです。足りないものはありますか?

追加情報: 私は仕事中です。多くのドメインユーザーがいます。コンボボックスはそれらをすべて表示します。おそらく、すべてのドメインユーザーが原因です。ローカルユーザーのみを表示するオプションを作成しましたが、それと同じ問題があります。

4

1 に答える 1

0

しかし、コンボボックスからユーザーを選択するたびに、ラベルが狂ってしまい、非常に多くの情報が表示され、切り替えられます。すべてのユーザーに関する情報を連続して表示しているようです。

はい-それはまさにあなたのコードがそうするように言っているからです:

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

コードは、あなたが要求したことを正確に実行しています。では、なぜそのようなイベント ハンドラーを接続したのでしょうか。選択したインデックスが変更されたときに実際に達成したいことを考えてください。選択した1 人のユーザーだけを検索したかったのでしょうか。もしそうなら、おそらく、あなたが使用しているクエリを変更して、ManagementObjectSearcherすべての結果を繰り返すのではなく、単一の結果を見つけるだけでよいでしょう。

于 2013-03-05T13:05:33.453 に答える