2010-04-13 2 views
0

i ont le code qui trouvent tous les utilisateurs locaux:groupe wmi dans lequel l'utilisateur consiste

 ManagementObjectSearcher userSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_UserAccount"); 
     foreach (ManagementObject user in userSearcher.Get()) 
     { 
      if ((bool)user["LocalAccount"]) 
      { 
       string UserName = (string)user["Name"]; 
      } 
     } 
     return; 

maintenant je veux le code qui me aider à sélectionner tous les groupes dans lesquels l'utilisateur se composent. Je sais qu'il y a une table appelée Win32_GroupUser et je dois utiliser PartComponent pour indiquer le nom d'utilisateur mais je ne peux pas créer de requête. S'il vous plaît aider avec des informations sur WQL.

Répondre

0

La requête ressemblera à quelque chose comme:

select * from Win32_GroupUser 
     WHERE PartComponent="Win32_Group.Domain='Workgroup',Name='LocalAccount'" 

string query = "Select * from Win32_GroupUser Where PartComponent="; 
query += '"Win32_Group.Domain='; 
query += "'" + user["Domain"] + "'"; 
query += ",Name='" + user["Name"] + "'"; 
query += '"'; 

Vous devez transmettre le nom de domaine et nom d'utilisateur pour rechercher les groupes associés. Pour des raisons de performances, je recommanderais la classe StringBuilder.

J'ai dérivé cette réponse de l'article this.