共用方式為


常見的 WIA 安全性問題

有數個常見問題可能會防止現有的 WIA 驅動程式 (在 LocalSystem 下正常執行) ,無法在 LocalService 帳戶下成功執行。

最常見的問題發生在:

  • 檔案系統存取

    LocalService 帳戶的檔案存取受到嚴格限制。 例如,驅動程式無法再寫入 %windir% 目錄。

  • 登錄檔存取

    許多可供 LocalSystem 帳戶存取的登錄機碼對 LocalService 帳戶都是唯讀的。 例如,驅動程式無法再寫入 HKLM 子樹狀結構下的登錄機碼。

  • 具名核心物件

    請確定 WIA 驅動程式和外部元件所存取的具名物件 (例如事件和互斥) ,例如隨附的應用程式,具有適當的 ACL。 如果應用程式建立具名事件物件,但未特別授與 LocalService 帳戶的存取權,驅動程式將無法使用它。 同樣地,如果迷你驅動程式建立具名事件物件,它必須授與相同的存取權,否則應用程式將無法使用事件物件。

  • 跨進程 COM 物件

    除非該元件明確授與 LocalService 帳戶適當的許可權,否則任何建立或使用跨進程 COM 介面的嘗試都會失敗。 例如,如果元件未將許可權授與 LocalService 帳戶,則呼叫 CoCreateInstanceCoCreateInstanceEx (兩者都在 Microsoft Windows SDK 檔中所述) 並設定 CLSCTX_LOCAL_SERVER 旗標,可能會失敗。 同樣地,驅動程式嘗試使用指向非同進程 COM 介面的指標可能會失敗。 當元件呼叫驅動程式並將用於回呼介面的指標提供給驅動程式時,便可能發生這種情況。

  • 建立和開啟流程

    WIA 驅動程式不應該手動啟動其他進程 (例如,呼叫 CreateProcessCreateProcessAsUser) 。 雖然此行為對於 LocalSystem 帳戶下的驅動程式會成功,但驅動程式無法再在新的 LocalService 帳戶下執行此動作。 如需 CreateProcessCreateProcessAsUser 的詳細資訊,請參閱 Windows SDK 檔。