Récupération sid utilisateur à partir de son nom

Soyez le premier à donner votre avis sur cette source.

Snippet vu 14 952 fois - Téléchargée 25 fois

Contenu du snippet

Mon problème est de supprimer tous les documents récents de tous les utilisateurs.
Pour l'utilisateur courant, cela est simple :
HKCU\\SOFTWARE\\Microsoft\\Windows\\Currentversion\\Explorer\\Shell Folders
avec la clé 'Recent'
maintenant avec le nom d'un autre compte, comment faire ?

Tout simplement par la base des registres dans le HKEY_USERS\\S-1-5-...
Le tout etant à partir d'un nom, d'obtenir le SID.

Le code suivant fonctionne seulement pour les utilisateurs locaux donc si qql'1 veut apporter la modif pour gérer aussi les controlleur de domaine ;p

Ce n'est pas non plus super rapide.
n'obuliez pas de rajouter la reference à votre projet

Source / Exemple :


using System.Management; 

namespace glcSystem
{
public class glcSystemUtil
{

/// <summary>
/// Return the SID associated to a username
/// </summary>
/// <param name="_oUsername">SID of username to get.</param>
/// <returns>Return a string like S-1-5-21-1844237615-73586283-725345543-1003</returns>
public static string GetUserSID (string _oUsername) 
{ 
  ManagementObjectSearcher	query; 
  ManagementObjectCollection	queryCollection; 

  // local scope 
  ConnectionOptions co    = new ConnectionOptions(); 
  co.Username	    = _oUsername; 
  ManagementScope msc = new ManagementScope ("\\root\\cimv2",co); 
  string queryString	    = "SELECT * FROM Win32_UserAccount where name='" +co.Username  +"'"; 
  SelectQuery q    	    = new SelectQuery (queryString); 
  query 		    = new ManagementObjectSearcher(msc, q); 
  queryCollection	    = query.Get(); 
  string res	                    = String.Empty; 
			
  foreach(ManagementObject mo in queryCollection)
  { 
    // there should be only one here! 
    res+= mo["SID"].ToString(); 
  } 
  return res; 
} 

}
}

Conclusion :


fonctionnement simple :

using glcSystem;

string oSID;
oSID = glcSystemUtil.GetUserSID ("MyUsername");

A voir également

Ajouter un commentaire

Commentaire

Messages postés
714
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
19 janvier 2017

Et comme ca rame et qu'il vaut mieux stocker le résultat quelque part voici le source enfin les 4 lignes de code ;p

Hashtable oUsername2SID = new Hashtable();

oUsername2SID.Add ("Vincent", "S-1-5");
oUsername2SID.Add ("Scoubidou", "S-1-5-11111");

string oResult;
oResult = (string)oUsername2SID["Scoubidou"];

// oResult vaudra "S-1-5-11111"
// ATTENTION A LA CASSE sinon ca renvoi null

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.