ADSI и контроль учетных записей пользователей
Windows и Windows Server имеют контроль учетных записей пользователей, который имеет последствия для приложений, использующих интерфейсы служб Active Directory (ADSI). В частности, эти интерфейсы предназначены для запуска учетной записью пользователя с правами администратора на локальном компьютере.
Проблема.
Каждый раз, когда приложение подключается к каталогу и пытается создать объект ADSI, схема Active Directory проверка для изменений. Если оно изменилось с момента последнего подключения, схема загружается и хранится в кэше на локальном компьютере. В версиях Windows до Windows Vista расположение по умолчанию для этого кэша было
%systemroot%\SchCache\
Однако приложения, выполняемые по стандартным учетным записям (т. е. неадминистраторам), не будут иметь доступа к этому каталогу, и, следовательно, приложения, использующие интерфейсы ADSI, выполняемые в этом режиме, будут загружать схему на каждом подключении, что будет влиять на пропускную способность и производительность.
Решения
Один пользователь . Чтобы устранить эту проблему, существуют новые разделы управления реестра поставщика ADSI, определяющие расположения реестра и расположения файлов для кэшированных объектов схемы Active Directory. Если раздел реестра
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.
Многопользовательское использование. Если вы используете приложения 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
В этом случае учетные записи администратора должны запускать приложение, что приведет к кэшированию файла схемы в глобальном расположении для дальнейшего использования менее привилегированными пользователями.