LocalService 계정에서 기존 WIA 드라이버(LocalSystem에서 제대로 실행됨)가 성공적으로 실행되지 않도록 할 수 있는 몇 가지 일반적인 문제가 있습니다.
가장 일반적인 문제는 다음과 같습니다.
파일 시스템 액세스
LocalService 계정에는 파일 액세스가 심각하게 제한됩니다. 예를 들어 드라이버는 더 이상 %windir% 디렉터리에 쓸 수 없습니다.
레지스트리 액세스
LocalSystem 계정에 열려 있던 많은 레지스트리 키는 LocalService에 읽기 전용입니다. 예를 들어 드라이버는 더 이상 HKLM 하위 트리의 레지스트리 키에 쓸 수 없습니다.
명명된 커널 개체
WIA 드라이버와 번들된 애플리케이션과 같은 외부 구성 요소에서 액세스하는 명명된 개체(예: 이벤트 및 뮤텍스)에 적절한 ACL이 있는지 확인합니다. 애플리케이션에서 명명된 이벤트 개체를 만들지만 LocalService 계정에 대한 액세스 권한을 구체적으로 부여하지 않으면 드라이버는 이를 사용할 수 없습니다. 마찬가지로 미니 드라이버가 명명된 이벤트 개체를 만드는 경우 동일한 액세스 권한을 부여해야 합니다. 그렇지 않으면 애플리케이션에서 이벤트 개체를 사용할 수 없습니다.
프로세스 외부 COM 개체
외부 프로세스 COM 인터페이스를 만들거나 사용하려는 시도는 해당 구성 요소가 LocalService 계정에 적절한 권한을 명시적으로 부여하지 않는 한 실패합니다. 예를 들어 구성 요소가 LocalService 계정에 권한을 부여하지 않는 경우 CLSCTX_LOCAL_SERVER 플래그 집합이 있는 CoCreateInstance 또는 CoCreateInstanceEx(둘 다 Microsoft Windows SDK 설명서에 설명되어 있음)에 대한 호출이 실패할 수 있습니다. 마찬가지로, 드라이버와 같은 프로세스 내에 있지 않은 COM 인터페이스에 대한 포인터를 사용하려고 시도하는 드라이버는 실패할 가능성이 있습니다. 이 문제는 구성 요소가 드라이버를 호출하고 드라이버가 인터페이스로 다시 호출할 수 있는 인터페이스에 대한 포인터를 전달하는 경우에 발생할 수 있습니다.
프로세스 만들기 및 열기
WIA 드라이버는 다른 프로세스를 수동으로 시작해서는 안 됩니다(예: CreateProcess 또는 CreateProcessAsUser를 호출). LocalSystem 계정의 드라이버에서 이 동작이 성공했지만 더 이상 드라이버가 새 LocalService 계정에서 이 동작을 수행할 수 없습니다. CreateProcess 및 CreateProcessAsUser에 대한 자세한 내용은 Windows SDK 설명서를 참조하세요.