SORU
31 Ocak 2009, CUMARTESİ


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
11 Mart 2009, ÇARŞAMBA


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Fullscreen

    Fullscreen

    23 Mart 2006
  • SomeOne Pro

    SomeOne Pro

    25 EKİM 2013
  • Videojug

    Videojug

    25 EKİM 2006