Domanda

Sto scorrendo una directory di rete e cercando di uscita i nomi utente / gruppo (permessi) associati ad ogni file / cartella. Sto ottenendo schiena del SID, ma voglio i nomi come "group_test" e non "S-1-5-32-544". Ecco il mio codice -

var files = Directory.GetFiles(path, "*.*", SearchOption.TopDirectoryOnly);

                foreach (var f in files2)
                {
                    var fileInfo = new FileInfo(f);
                    var fs = fileInfo.GetAccessControl(AccessControlSections.Access);

                    foreach (FileSystemAccessRule rule in fs.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount)))
                    {
                        var value = rule.IdentityReference.Value;
                        Response.Write(string.Format("File: {0} \t Usergroup: {1} <br/>", fileInfo.Name, value));
                    }  }

ottengo SID dal codice di cui sopra, ma nel ciclo foreach, se uso questo posto -

(NTAccount)((SecurityIdentifier)rule.IdentityReference).Translate(typeof(NTAccount)).Value

ottengo questa eccezione - Some or all identity references could not be translated.

Sembra che il metodo translate non funziona sulle azioni remote. Come faccio a recuperare i veri nomi dei SID? Il server remoto non ha LDAP.

Grazie.

È stato utile?

Soluzione

Il problema è che si sta tentando di risolvere un SID che è locale per una macchina remota. Per quanto la risposta a questa domanda stati:

L'oggetto SecurityReference è metodo translate funziona su SID non locali, ma solo per il dominio conti ...

collegamento fornisce un esempio per risolvere a distanza un SID utilizzando WMI, che è probabilmente il metodo migliore per realizzare il vostro compito.

Altri suggerimenti

Se è possibile utilizzare WMI si dovrebbe essere in grado di farlo attraverso il Win32_UserAccount classe penso. Ha una proprietà Name e una proprietà SID.

Win32_Group per i gruppi.

Ecco un articolo per il collegamento ad un PC remoto tramite WMI che ha codice C #: Procedura: connettersi a un computer remoto

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top