2

私が知っている、我々はこのようにDirectoryEntryのを取得することができます:objectGUIDを使用する方法DirectoryEntryを取得しますか?

string conPath = "LDAP://10.0.0.6/DC=wds,DC=gaga,DC=com"; 
string conUser = "administrator"; 
string conPwd = "Iampassword"; 
DirectoryEntry de = new DirectoryEntry(conPath, conUser, conPwd, AuthenticationTypes.Secure); 

、我々は次のようにユーザーのパスワードを変更することができます:我々は得ることができます

string x = obj.Guid.ToString();; 

使用する場合

DirectorySearcher deSearch = new DirectorySearcher(); 
deSearch.SearchRoot = de; 
deSearch.Filter = String.Format("sAMAccountName={0}", "xumai"); 
SearchResultCollection results = deSearch.FindAll(); 
foreach (SearchResult objResult in results) 
{ 
    DirectoryEntry obj = objResult.GetDirectoryEntry(); 
    obj.Invoke("setPassword", new object[] { "Welcome99" }); 
    obj.CommitChanges(); 
} 

ユーザーのオブジェクトGUID「0b118130-2a6f-48d0-9b66-c12a0c71d892」

私はパスワードベースのthis objectGUIDを変更しますか?

このオブジェクトのユーザーIDを検索する方法「LDAP://10.0.0.6/DC=wds,DC=gaga,DC=com」?

フィルターはありますか? etc strFilter = "(&(objectGUID = 0b118130-2a6f-48d0-9b66-c12a0c71d892))";あなたの助けのための

希望

感謝。

答えて

6

コードを変更せずにmultiple way to bind to Active-Directoryを取得しました。

最初の1 use GUID to bind to an object

string conPath = "LDAP://10.0.0.6/<GUID=0b118130-2a6f-48d0-9b66-c12a0c71d892>"; 

秒1 use SID to bind to an object:ここでは他の二つの方法があり

あなたがそのようにそれを行うことができます security Principalsを使用
string conPath = "LDAP://10.0.0.6/<SID=S-X-X-XX-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXX-XXX>"; 

UserPrincipal user = UserPrincipal.FindByIdentity(adPrincipalContext, IdentityType.DistinguishedName,"CN=User1Acct,OU=TechWriters,DC=wds,DC=gaga,DC=com"); 

または

UserPrincipal user = UserPrincipal.FindByIdentity(adPrincipalContext, IdentityType.Guid,"0b118130-2a6f-48d0-9b66-c12a0c71d892"); 
+0

うまく動作します、ありがとう! – cciikk

0

.NET 3.5がオプションの場合は、System.DirectoryServices.AccountManagementを使用する必要があります。まったく新しい世界です。

using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, 
                "LDAP://10.0.0.6", 
                "DC=wds,DC=gaga,DC=com", 
                "administrator", 
                "Iampassword")) 
{ 
    string theGuid = "0b118130-2a6f-48d0-9b66-c12a0c71d892"; 
    UserPrincipal up = UserPrincipal.FindByIdentity(pc, IdentityType.Guid, theGuid); 
} 

同じテンプレートを他のオブジェクトタイプに簡単に適用できます。

+0

ありがとうございますが、私は "LDAP://10.0.0.6/"を "10.0.0.6"に変更する必要があり、うまくいきます。 、GUIDがOUの場合はどうすればよいですか? 私はSystem.DirectoryServices.AccountManagement名前空間を読みましたが、OUのクラスはありません。 – cciikk

+0

オススメ、コピー&ペースト。これを修正しました。すぐにOUのアップデートを投稿します –

関連する問題