如何在Delphi中对Windows域用户进行身份验证?
我正在尝试在Delphi中验证windows域用户。我使用了下面的代码。 如果我使用ADS\u安全认证,它会说 登录失败:未知用户名或错误密码 如果我使用ADS\u使用SSL,它会说 指定了无效的dn语法如何在Delphi中对Windows域用户进行身份验证?,delphi,ldap,Delphi,Ldap,我正在尝试在Delphi中验证windows域用户。我使用了下面的代码。 如果我使用ADS\u安全认证,它会说 登录失败:未知用户名或错误密码 如果我使用ADS\u使用SSL,它会说 指定了无效的dn语法 提前感谢只要我使用完全合格的域控制器,以下代码对我有效: var hr: HResult; pObject : IADs; Pwd : String; begin Pwd := 'Hello'; hr := ADsOpenObject('LDAP://'+
提前感谢只要我使用完全合格的域控制器,以下代码对我有效:
var
hr: HResult;
pObject : IADs;
Pwd : String;
begin
Pwd := 'Hello';
hr := ADsOpenObject('LDAP://'+ FQDC,
'Administrator',
Pwd,
ADS_SECURE_AUTHENTICATION,
IID_IADs,
pObject);
OleCheck(hr);
pObject := nil;
end;
您使用的是哪个版本的Delphi?我最初的怀疑是unicode…而且,如果这是在VCL表单中,那么就没有必要调用
CoInitialize()
,因为VCL已经为您完成了。您是否阅读了ADsOpenObject文档中的备注?按照Microsoft的建议,请参阅:您如何导入ADsOpenObject的可能重复?@asgar,通过EMB Web.Win.adstype我是这样导入的。你认为我做错了吗。函数adOpenObject(lpszPathName、lpszUserName、lpszPassword:WideString;dwReserved:DWORD;const riid:TGUID;out ppObject):HResult;安全呼叫;外部“activeds.dll”@asgar,声明匹配,但请查看我的更新答案和正确的pObjecttype@asgar,我正在测试一个Ubuntu Samba DC,它现在的等级是2008RC2,我只使用DC的完全限定名:“LDAP://vmHome.home.local”。
var
hr: HResult;
pObject : IADs;
Pwd : String;
begin
Pwd := 'Hello';
hr := ADsOpenObject('LDAP://'+ FQDC,
'Administrator',
Pwd,
ADS_SECURE_AUTHENTICATION,
IID_IADs,
pObject);
OleCheck(hr);
pObject := nil;
end;