Я написал программу на C ++, предназначенную для запуска на рабочей станции, подключенной к контроллеру домена, в настройке Active Directory. Отлично работает, кроме следующей ситуации.
Скажем, пользователь устанавливает его на ноутбук, подключенный к DC, но затем удаляет этот ноутбук из среды Active Directory (скажем, уходит домой с ним, где DC недоступен).
Есть ли способ обнаружить это из моего программного обеспечения?
Я бы попытался привязать или найти известный объект в 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();
Посмотри на ADSI Документация в MSDN, большая часть работает только при наличии доступа к AD.
Других решений пока нет …