LocalService アカウントで既存の WIA ドライバー (LocalSystem で正常に動作) が正常に実行されないようにする可能性がある一般的な問題がいくつかあります。
最も一般的な問題は次の場合に発生します。
ファイル システム へのアクセス
LocalService アカウントでは、ファイル アクセスが厳しく制限されています。 たとえば、ドライバーは、%windir% ディレクトリに書き込めなくなりました。
レジストリ アクセス
LocalSystem アカウントに対して開かれた多くのレジストリ キーは、LocalService に対して読み取り専用です。 たとえば、ドライバーは HKLM サブツリーのレジストリ キーに書き込むことができなくなります。
名前付きカーネル オブジェクト
WIA ドライバーと、バンドルされたアプリケーションなどの外部コンポーネントの両方からアクセスされる名前付きオブジェクト (イベントやミューテックスなど) に適切な ACL があることを確認します。 アプリケーションが名前付きイベント オブジェクトを作成しても、 LocalService アカウントへのアクセスを明示的に許可しない場合、ドライバーはそれを使用できません。 同様に、ミニドライバーが名前付きイベント オブジェクトを作成する場合は、同じアクセス権を付与する必要があります。そうしないと、アプリケーションはイベント オブジェクトを使用できません。
アウトプロセス COM オブジェクト (別プロセスで実行される COM オブジェクト)
プロセス外の COM インターフェイスを作成または使用しようとすると、そのコンポーネントが LocalService アカウントに適切なアクセス許可を明示的に付与しない限り失敗します。 たとえば、コンポーネントが LocalService アカウントへのアクセス許可を付与していない場合、CLSCTX_LOCAL_SERVER フラグが設定された CoCreateInstance または CoCreateInstanceEx (両方とも Microsoft Windows SDK ドキュメントで説明されています) の呼び出しは失敗する可能性があります。 同様に、ドライバーに対してインプロセスではない COM インターフェイスへのポインターを使用しようとするドライバーは失敗する可能性があります。 これは、コンポーネントがドライバーを呼び出し、ドライバーがインターフェイスにコールバックできるインターフェイスへのポインターを渡した場合に発生する可能性があります。
プロセスの作成と起動
WIA ドライバーは、他のプロセスを手動で開始しないでください (たとえば、 CreateProcess または CreateProcessAsUser を呼び出す)。 LocalSystem アカウントのドライバーでは、この動作は成功しましたが、新しい LocalService アカウントではドライバーが実行できなくなります。 CreateProcess とCreateProcessAsUser の詳細については、Windows SDK のドキュメントを参照してください。