Per chi conosce Active Directory, è noto che i gruppi presenti in questo repository possono essere di 4 tipologie differenti.
- Global Group
- Domain Local Group
- Universal Group
- Security Group
Ora pensiamo ad una semplice query Ldap con DirecotrySearcher per elencare tutti i gruppi presenti in AD. Dovremmo scrivere qualcosa del genere :
foreach (SearchResult risultato in risultati)
{
DirectoryEntry de = risultato.GetDirectoryEntry();
GruppoWindows gruppo = new GruppoWindows();
gruppo.Nome = (string)de.Properties["name"].Value;
gruppo.Sid = ConvertiSid((byte[])de.Properties["objectsid"].Value);
gruppo.Descrizione = (string)de.Properties["description"].Value;
gruppo.Type = (int)de.Properties["grouptype"].Value;
La cosa assurda è che il valore int che riceviamo da Ldap per il tipo gruppo è uno di questi :
Aggiungo alcune modifiche reperite in rete!!
Tipo Gruppo |
Valore int |
Distribuition
|
2
|
Domain local group / Security
|
-2147483644
|
Global Security
|
-2147483646
|
Universal Security
|
-2147483640
|
BuiltinLocal Security |
-2147483643
|
La cosa che proprio non capisco è: perchè assegnare al Security un valore cosi' strano???