ActiveDirectoryセットアップのドメインコントローラーに接続されたワークステーションで実行するように設計されたC++プログラムを作成しました。次の状況を除いて、それはうまく機能します。
たとえば、ユーザーがDCに接続されているラップトップにインストールした後、そのラップトップをActive Directory環境から移動したとします(たとえば、DCにアクセスできない場所に移動します)。
私のソフトウェアからこれを検出する方法はありますか?
ActiveDirectoryセットアップのドメインコントローラーに接続されたワークステーションで実行するように設計されたC++プログラムを作成しました。次の状況を除いて、それはうまく機能します。
たとえば、ユーザーが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();
MSDNのADSIドキュメントを参照してください。ほとんどのドキュメントは、ADにアクセスできる場合にのみ機能します。