使用远程计算机上的服务中的WinNT提供程序从ADsOpenObject()获取IADsContainer对象时遇到问题。
除了编号4之外,我已经能够在以下情况下使用代码
#include <iostream>
#include <Adshlp.h>
#include <comdef.h>
IADsContainer* container = nullptr;
HRESULT hres = ADsOpenObject( L"WinNT://192.168.1.30", L"Administrator", L"someAdminPass", ADS_SECURE_AUTHENTICATION | ADS_READONLY_SERVER, IID_IADsContainer, (void**)&container );
if( SUCCEEDED(hres) )
{
// do stuff with the container object
}
else
{
_com_error err( hres );
LPCTSTR errMsg = err.ErrorMessage();
std::wcout << errMsg;
}
我希望hres是S_OK和有效的“容器”指针,但我只会得到带有错误字符串“ Unspecified error”的E_FAIL
答案 0 :(得分:0)
通过@ DrakeWu-MSFT的评论中的指南,此问题得以解决!
我只需要指定一个FQDN用户名。如果您的计算机域是“ DOMAIN.COM”,则用户名字符串应为“ UserName@DOMAIN.com”,这对我来说解决了这个问题。对于此类描述性错误消息,MS也表示“非常感谢” ...:)< / p>
主代码行现在看起来像这样:
HRESULT hres = ADsOpenObject( L"WinNT://192.168.1.30", L"Administrator@MYDOMAIN.COM", L"someAdminPass", ADS_SECURE_AUTHENTICATION | ADS_READONLY_SERVER, IID_IADsContainer, (void**)&container );
P.S。请注意,还有其他WinAPI函数不喜欢FQDN用户名。