Nasıl C bir hesap için SID adı dönüştürme#
Ben C# Bir dizin tarar ve bazı bilgileri toplayan bir uygulama. Her dosya için hesap adını göstermek istiyorum. GB nesnenin SID almak, ve sonra yaparak yerel sistemde bunu yapabilirim:
string GetNameFromSID( SecurityIdentifier sid )
{
NTAccount ntAccount = (NTAccount)sid.Translate( typeof( NTAccount ) );
return ntAccount.ToString();
}
Ancak, bu muhtemelen Translate çünkü bir ağ üzerindeki dosyaları için çalışmaz() işlevi yalnızca yerel kullanıcı hesapları ile çalışır. Belki de SİD bir LDAP arama yapabilirim, takip etmeye çalıştım ben de öyle düşünmüştüm:
string GetNameFromSID( SecurityIdentifier sid )
{
string str = "LDAP://<SID=" sid.Value ">";
DirectoryEntry dirEntry = new DirectoryEntry( str );
return dirEntry.Name;
}
Bu "dirEntry.erişim o, bu iş olacak gibi görünüyor Adı gidiyor gibi" bir kaç saniye kilitleniyor, ve ağ sorgulama, ama sonra bir Sistem atar.Çalışma zamanı.Interopservices.COMException
Kimse keyfi olarak bir dosya veya SID hesap adı nasıl alabilirim biliyor mu? Ağ veya LDAP ya da bir şey hakkında çok şey bilmiyorum. Bir sınıf olarak adlandırılan DirectorySearcher belki yaşayacağım kullanın, ama istediği bir etki alanı adı, ve ben bilmem nasıl olduğunu ya da elimde olan dizin yolunu ben tarama.
Şimdiden teşekkürler.
CEVAP
Burada iyi bir cevap için bkz
http://stackoverflow.com/questions/380031/the-best-way-to-resolve-display-username-by-sid
Olayın özü bu bit
string sid="S-1-5-21-789336058-507921405-854245398-9938";
string account = new System.Security.Principal.SecurityIdentifier(sid).Translate(typeof(System.Security.Principal.NTAccount)).ToString();
Bu yaklaşım, yerel olmayan SİD'İN üzerinde active directory için benim için çalışıyor.
Nasıl Onaltılık Dize ve Başkan versa i...
Nasıl bir SQL sorgu ile birden çok hes...
Nasıl dönüştürme .dosya özel anahtar i...
Nasıl dönüştürme .İçin ICO .PNG?...
Nasıl C Metin için HTML Dönüştürme#?...