我正在使用Synapse LDAPSend.pas库在Active Directory服务器中进行连接和身份验证。代码非常简单直接,但问题是用户名需要“DomainName \ Username”或“Username @ DomainName”格式才能使绑定命令正常工作。无论如何只能使用指定的用户名吗?
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中的任何其他命令以使其有效?或者也许是Synapse设置。
答案 0 :(得分:0)
如果当前用户登录到域,则有多种选项可用于检索域名。最简单的方法是使用函数SysUtils.GetEnvironmentVariable
读取环境变量USERDOMAIN
。 Windows NT上还提供了Windows API函数NetWkstaUserGetInfo
以及Windows 2000中引入的GetUserNameEx
以及其他许多函数,这些函数通常更难使用。
如果您的Delphi版本不包含这些API函数的声明,请使用Jedi Windows API headers。