有數個常見問題可能會防止現有的 WIA 驅動程式 (在 LocalSystem 下正常執行) ,無法在 LocalService 帳戶下成功執行。
最常見的問題發生在:
檔案系統存取
LocalService 帳戶的檔案存取受到嚴格限制。 例如,驅動程式無法再寫入 %windir% 目錄。
登錄檔存取
許多可供 LocalSystem 帳戶存取的登錄機碼對 LocalService 帳戶都是唯讀的。 例如,驅動程式無法再寫入 HKLM 子樹狀結構下的登錄機碼。
具名核心物件
請確定 WIA 驅動程式和外部元件所存取的具名物件 (例如事件和互斥) ,例如隨附的應用程式,具有適當的 ACL。 如果應用程式建立具名事件物件,但未特別授與 LocalService 帳戶的存取權,驅動程式將無法使用它。 同樣地,如果迷你驅動程式建立具名事件物件,它必須授與相同的存取權,否則應用程式將無法使用事件物件。
跨進程 COM 物件
除非該元件明確授與 LocalService 帳戶適當的許可權,否則任何建立或使用跨進程 COM 介面的嘗試都會失敗。 例如,如果元件未將許可權授與 LocalService 帳戶,則呼叫 CoCreateInstance 或 CoCreateInstanceEx (兩者都在 Microsoft Windows SDK 檔中所述) 並設定 CLSCTX_LOCAL_SERVER 旗標,可能會失敗。 同樣地,驅動程式嘗試使用指向非同進程 COM 介面的指標可能會失敗。 當元件呼叫驅動程式並將用於回呼介面的指標提供給驅動程式時,便可能發生這種情況。
建立和開啟流程
WIA 驅動程式不應該手動啟動其他進程 (例如,呼叫 CreateProcess 或 CreateProcessAsUser) 。 雖然此行為對於 LocalSystem 帳戶下的驅動程式會成功,但驅動程式無法再在新的 LocalService 帳戶下執行此動作。 如需 CreateProcess 和 CreateProcessAsUser 的詳細資訊,請參閱 Windows SDK 檔。