如何判断工作站当前是否使用C ++连接到域控制器

时间:2012-11-19 01:35:56

标签: c++ winapi networking active-directory network-programming

我编写了一个C ++程序,旨在在连接到Active Directory设置中的域控制器的工作站上运行。除了以下情况外,它的效果很好。

比如说,用户将其安装在连接到DC的笔记本电脑上,但随后将该笔记本电脑从Active Directory环境中移开(例如,在无法访问DC的情况下回家)。

有没有办法从我的软件中检测到这个?

1 个答案:

答案 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时才有效。