我有这个代码是运行在所有的Windows平台(XP 32位,XP 64位,服务器2003 32位,服务器2008 32位,Windows 7 32位),我只是不能运行在“Windows Server 2008 R2 64位”的API导致无法处理的exception:
“应用程序定义的exception(代码0x0eedfade)在0x7773c42d”
这是我使用的代码:
function GetObject(APath: String): IDispatch; var Moniker: IMoniker; Eaten: integer; BindContext: IBindCtx; Dispatch: IDispatch; begin Result := nil; OleCheck(CreateBindCtx(0, BindContext)); OleCheck(MkParseDisplayNameEx(BindContext, PWideChar(WideString(APath)), Eaten, Moniker)); OleCheck(Moniker.BindToObject(BindContext, nil, IUnknown, Dispatch)); Result := Dispatch; end;
该行出现exception:
OleCheck(MkParseDisplayNameEx(BindContext, PWideChar(WideString(APath)), Eaten, Moniker));
我也试过这个代码,但也出现一个无处理的exception:
function GetObject(APath: String): IDispatch; begin ADsGetObject(APath, IDispatch, Result); end;
我在所有平台传递相同的APath参数:“LDAP:// MYDOMAIN / CN = MY_DOMAIN_GROUP,CN = Users,DC = MYDOMAIN,DC = COM”
这与LDAP协议和ADSIEdit.dll库有关,我检查了是否RSAT -Reamote服务器pipe理工具 – 应该安装这个库,它看起来这个Windows组件已经安装…任何想法的原因这个例外?