2010-05-11 11 views
5

मैं वर्तमान में लॉग इन उपयोगकर्ता के लिए कर्मचारी-आईडी प्राप्त करना चाहता हूं। क्या यह कुछ नेट क्लास में आसानी से उपलब्ध है या क्या मुझे कुछ प्रकार की एलडीएपी क्वेरी करने की ज़रूरत है?क्या मैं विंडोज प्रिंसिपल से सक्रिय निर्देशिका विशेषताओं को प्राप्त कर सकता हूं?

कोई युक्ति का स्वागत करते हैं

उत्तर

6

भी आसान - नए .NET 3.5 System.DirectoryServices.AccountManagement सुविधाओं का उपयोग।

विवरण के लिए एमएसडीएन आलेख Managing Directory Security Principals in the .NET Framework 3.5 देखें।

PrincipalContext ctx = new PrincipalContext(ContextType.Domain. "YOURDOMAIN"); 

UserPrincipal user = UserPrincipal.FindByIdentity(ctx, loginName); 

if(user != null) 
{ 
    string empID = user.EmployeeId; 
} 

नई दृढ़ता से टाइप की गई प्रमुख कक्षाएं इसे एडी के साथ काम करने के लिए हवा बनाती हैं।

+0

हां, यह आसान है। ध्यान दें कि यह UserPrincipal.EmployeeId नहीं है ... आईडी धन्यवाद – Graeme

+1

धन्यवाद मार्क, मैं खोज रहा था कि विंडोज प्रिंसिपल से उपयोगकर्ता प्रिंसिपल कैसे प्राप्त करें। यहां मुझे एहसास हुआ कि यदि मेरे पास डोमेन है तो मैं ऐसा कर सकता हूं, मेरे विंडोज पहचान वस्तु से कुछ भी नहीं करना। – Veverke

-1

प्रयुक्त ई क्वेरी - बहुत ही सरल:

DirectorySearcher ds = new DirectorySearcher(); 
ds.PropertiesToLoad.Add("employeeID"); 
ds.Filter = String.Format("(&(objectCategory=person)(sAMAccountName={0}))", loginName); 

result = ds.FindOne(); 
if (result != null) 
{ 
    personnelNumber = result.Properties["employeeID"][0].ToString(); 
} 
+0

परिणाम कहां से आता है? "परिणाम = ds.FindOne();" –

संबंधित मुद्दे

 संबंधित मुद्दे