我正在尝试在Delphi中验证Windows域用户。我使用下面的代码。
如果我使用ADS_SECURE_AUTHENTICATION
,则说
登录失败:未知用户名或密码错误
如果我使用ADS_USE_SSL,则说
指定了无效的dn语法
function TLoginForm.Authenticate( pUser, pPassword,pDomain: WideString): Boolean;
Var
aUser,Obj : IAdsUser;
infoback : HRESULT;
begin
Try
CoInitialize(nil);
infoback := 0;
infoback := ADsOpenObject(Format('LDAP://%s',[pDomain]),Format('%s',[pUser]),pPassword,ADS_USE_SSL,IAds,aUser);
CoUninitialize;
Result := true;
ShowMessage('Success');
// here retrieve the information needed
Except
On E:Exception do
Begin
Result := false;
ShowMessage(E.Message);
aUser := Nil;
End;
End
end;
先谢谢
答案 0 :(得分:0)
只要我使用完全合格的域控制器,下面的代码就适用于我:
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;