2010-03-23 12 views
6

Kullanıcının güvenlik tanımlayıcılarının bir listesi var ve userPrincipalName'ın bir listesini almam gerekiyor ... DirectoryEntry kullanıcılarını yüklemeden ve userPrincipalName özelliğinden faydalanmadan alabilmemin herhangi bir yolu var mı? Bu Sen Win32 seslenmek LookupAccountSid() yöntemini kullanarak bu alabilirsiniz çokBir kullanıcının SID'si göz önünde bulundurulduğunda, kullanıcılarınaPrincipalName değerini nasıl alabilirim?

cevap

-1

yapılır çünkü

Ben mümkün olan en verimli yöntem gerekir. Bağlantılı olduğum sayfada, basit bir örnek gösteren bazı örnek kodlar var.

6

.NET 3.5 kullanıyorsanız, bu mükemmel MSDN makalesine bakın Managing Directory Security Principals in the .NET Framework 3.5.

.NET 3.5'ün System.DirectoryServices.AccountManagement ad alanının yeni geliştirilmiş arama yeteneklerini gösterir.

Güzel bir özellik FindByIdentity yöntemidir, bu bir kimlik (kullanıcı asıl adı, ayırt edici adı, bir GUID veya SID) olup olmadığını - yalnızca bir kullanıcı tabanlı (veya grup) bulmak için olanak sağlar. :

UserPrincipal user = 
    UserPrincipal.FindByIdentity(principalContext, 
           IdentityType.Sid, (value)); 

Sen uygun formatta SID sağlamak için emin olmak gerekir - ayrıntılar için MSDN dokümanlar bakın.

Eğer kullanıcı asıl nesne oluşturduğunuzda, onun kullanıcı asıl adını almak:

if(user != null) 
{ 
    string upn = user.UserPrincipalName; 
} 

yazı için örnek kod bile aradığınız tam olarak ne elde etmek için iki ek yardımcı yöntemleri FindByIdentityGuid ve FindByIdentitySid sahiptir !

Bir göz atın ve kullanın.

+0

Maalesef takılıyorum .Net 2.0, ancak yükseltme yaptığımızda bunun bilinmesi güzel. Teşekkürler –

İlgili konular