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

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

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.