Поделиться через


Распространенные проблемы с безопасностью WIA

Существует несколько распространенных проблем, которые могут помешать успешному запуску существующего драйвера WIA (который работал нормально в LocalSystem) под учетной записью LocalService .

Наиболее распространенные проблемы возникают с:

  • Доступ к файловой системе

    Учетная запись LocalService имеет строго ограниченный доступ к файлам. Например, драйверы больше не могут выполнять запись в каталог %windir%.

  • Доступ к реестру

    Многие разделы реестра, открытые для учетных записей LocalSystem, доступны только для чтения в LocalService. Например, драйверы больше не могут выполнять запись в разделы реестра поддереве HKLM.

  • Именованные объекты ядра

    Убедитесь, что именованные объекты (например, события и мьютексы), к которым обращается драйвер WIA и внешние компоненты, такие как пакетные приложения, имеют соответствующие списки управления доступом. Если приложение создает именованный объект события, но специально не предоставляет доступ к учетной записи LocalService , драйвер не сможет его использовать. Аналогичным образом, если мини-диск создает именованный объект события, он должен предоставить тот же доступ, иначе приложение не сможет использовать объект события.

  • Внепроцессные COM-объекты

    Любая попытка создать или использовать внепроцессный COM-интерфейс завершится ошибкой, если этот компонент явно не предоставит соответствующие разрешения учетной записи LocalService . Например, вызовы CoCreateInstance или CoCreateInstanceEx (оба описаны в документации по Microsoft Windows SDK) с установленным флагом CLSCTX_LOCAL_SERVER могут завершиться ошибкой, если компонент не предоставит разрешение учетной записи LocalService. Аналогичным образом, попытка драйвера использовать указатель на COM-интерфейс, который не является внутрипроцессным, может завершиться ошибкой. Это может произойти, если компонент вызывает драйвер и передает ему указатель на интерфейс, с помощью которого драйвер может вызывать интерфейс.

  • Создание и открытие процессов

    Драйверы WIA не должны вручную запускать другие процессы (например, путем вызова CreateProcess или CreateProcessAsUser). Хотя это поведение было бы успешным для драйверов в учетных записях LocalSystem , драйверы больше не могут сделать это в новой учетной записи LocalService . Дополнительные сведения о CreateProcess и CreateProcessAsUser см. в документации по Windows SDK.