2013-03-05 2 views
0

작은 컴퓨터 정보 도구를 사용하고 있습니다. 지금은 사용자 계정을 만들고 있습니다. 나는 이용 가능한 사용자들에게 콤보 박스를 채운다. Win32_Account 클래스 이상한 동작

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 때문에 모든 도메인 사용자. 로컬 사용자 만 표시하는 옵션을 만들었지 만 동일한 문제가 있습니다.

답변

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

코드는 당신이에 질문을 정확하게하고있다. 자, 에 그런 이벤트 처리기를 연결 했나요? 당신이 실제로 을 생각하면 선택한 인덱스가 바뀌면 달성하기를 원합니다. 실제로 (으)로 선택한 사용자를 찾으십니까? 그렇다면 아마도 사용중인 쿼리를 ManagementObjectSearcher으로 변경 한 다음 모든 결과를 반복하는 대신 단일 결과를 찾아야 할 것입니다.