2017-06-25 9 views
1

私はActive Directoryサーバに接続して認証するためにSynapse LDAPSend.pasライブラリを使用しています。コードは非常にシンプルで直接的ですが、コマンドを正しくバインドするには、ユーザー名に "DomainName \ Username"または "Username @ DomainName"形式が必要であるという問題があります。どういうわけか、Usernameを指定してのみ動作させるのですか?Synapse LDAPSendライブラリにはusername = Domain Userが必要です

var 
    ldap: TLDAPsend; 
begin 
    ldap:= TLDAPsend.Create; 
    try 
    ldap.TargetHost := '192.168.0.12'; 
    ldap.UserName:= 'AD\Owner'; //here I need to specify only Owner 
    ldap.Password:= 'Password!'; 
    if ldap.Login then 
     if ldap.Bind then 
     begin 
     //do stuff 
     ldap.Logout; 
     end; 
    finally 
    ldap.Free; 
    end; 
end; 

"* \ Owner"やActive Directoryの他のコマンドを使って動作させると思っていましたか?それを作るためのシナプスの設定かもしれません。

+1

常に名前を持つActive Directoryに接続しています。ユーザー名を知っている場合、ドメイン名を取得することは問題ではありません。 –

+0

私はActive Directoryに慣れていません。ログに記録せずにドメイン名を取得することは可能ですか?どうやってやるの? – user2864778

+0

あなたのプログラムは、クライアントマシン上で実行されているか、またはネットワーク上のどこかのサーバ上で動作していますか?プログラムがサーバー上で実行されている場合:ADドメインのサーバー部分ですか? –

答えて

0

現在のユーザーがドメインにログオンしている場合は、ドメイン名を取得するためのさまざまなオプションがあります。最も簡単な方法は、関数SysUtils.GetEnvironmentVariableを使用して環境変数USERDOMAINを読み込むことです。また、Windows NTで利用可能なWindows API関数NetWkstaUserGetInfoがあります。また、Windows 2000には、多くの場合、Windows 2000で導入されているGetUserNameExがあります。

ご使用のバージョンのDelphiにこれらのAPI関数の宣言が含まれていない場合は、Jedi Windows API headersを使用してください。

+0

ありがとうございました。現在のユーザーがドメインにログオンしておらず、ローカルネットワークの外部にある場合、ドメインを取得する方法はありますか?おそらく、ADサーバー上で匿名でログイン/バインドを行い、ドメイン名を匿名で取得しますか? – user2864778

+0

ドメイン名を取得するには、['DsGetDcName'](https://msdn.microsoft.com/en-us/library/ms675983(v = vs.85).aspx)を呼び出してみてください。ドメインコントローラが要求を処理できる必要があります。 –

関連する問題