ADSI およびユーザー アカウント制御
Windows と Windows Server にはユーザー アカウント制御があり、Active Directory サービス インターフェイス (ADSI) を使用するアプリケーションに影響を及ぼします。 具体的には、これらのインターフェイスは、ローカル コンピューターの管理者特権を持つユーザー アカウントによって実行されるように設計されています。
問題
アプリケーションがディレクトリに接続して ADSI オブジェクトを作成しようとするたびに、Active Directory スキーマが変更されたかどうかがチェックされます。 前回の接続以降に変更された場合は、スキーマがダウンロードされ、ローカル コンピューター上のキャッシュに格納されます。 Windows Vista より前のバージョンの Windows では、このキャッシュの既定の場所は次のとおりでした。
%systemroot%\SchCache\
ただし、標準、つまり管理者以外のアカウントで実行されるアプリケーションは、このディレクトリにアクセスすることができず、その結果、このモードで実行される ADSI インターフェイスを使用するアプリケーションは、接続のたびにスキーマをダウンロードすることになり、スループットとパフォーマンスに影響を与えます。
ソリューション
シングル ユーザー - この問題を解決するために、キャッシュされた Active Directory スキーマ オブジェクトのレジストリの場所とファイルの場所を決定する新しい ADSI Provider レジストリ コントロール キーがあります。 レジストリ キーが
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\adsi\Cache\PerMachine
0 (ゼロ) に設定されている場合、各ユーザーは ADSI 用に異なるストレージの場所を持つことになります。レジストリ キーは
HKEY_CURRENT_USER\Software\Microsoft\ADs\Providers\LDAP\
に格納され、キャッシュ ファイルは
%LOCALAPPDATA%\Microsoft\Windows\SchCache
に格納されます。これらの設定は、Windows Server 2008 または Windows Vista を実行しているコンピューターの既定の設定です。
マルチユーザー - 多くのユーザーアカウントを持つコンピューター (Web サーバーなど) で ADSI アプリケーションを実行している場合、Active Directory スキーマ キャッシュの多くのコピーが大容量のディスク スペースを使用しない方が望ましいです。 レジストリ キー
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\adsi\Cache\PerMachine
の設定を 1 に設定すると、ADSI は以前の動作に戻ります。すべての Active Directory スキーマ オブジェクトは、以前の場所に格納されます。レジストリ キーは
HKEY_LOCAL_MACHINE\Software\Microsoft\ADs\Providers\LDAP
に格納され、キャッシュ ファイルは
%systemroot%\SchCache
に格納されます。この場合、管理者アカウントはアプリケーションを実行する必要があります。これにより、スキーマ ファイルがグローバルな場所にキャッシュされ、特権の少ないユーザーが将来使用できるようになります。