我编写了一个C ++程序,旨在在连接到Active Directory设置中的域控制器的工作站上运行。除了以下情况外,它的效果很好。
比如说,用户将其安装在连接到DC的笔记本电脑上,但随后将该笔记本电脑从Active Directory环境中移开(例如,在无法访问DC的情况下回家)。
有没有办法从我的软件中检测到这个?
答案 0 :(得分:1)
我尝试绑定或搜索AD中的已知对象。如果绑定成功,我们应该在域中。假设用户使用离线AD配置文件登录,您可以尝试绑定到当前用户:
IADs *pObject;
HRESULT hr;
CoInitialize(NULL);
hr = ADsGetObject(L"LDAP://CN=user,DC=domain,DC=com", IID_IADs, (void**) &pObject);
if(SUCCEEDED(hr))
{
// AD is available
pObject->Release()
}
else
{
// AD is NOT available
}
CoUninitialize();
查看MSDN中的ADSI文档,大部分文档仅在您有权访问AD时才有效。