建立安全裝置安裝

當您建立 驅動程式套件時,您必須確定裝置的安裝一律會以安全的方式執行。 安全裝置安裝是執行下列動作的裝置:

  • 限制存取裝置及其裝置介面類別別

  • 會限制存取為裝置建立的驅動程式服務

  • 保護驅動程式檔案不受修改或刪除

  • 會限制存取裝置的登錄專案

  • 會限制裝置 WMI 類別的存取

  • 正確使用 SetupAPI 函式

裝置安裝安全性是由 安全性描述項所控制。 指定安全性描述元的主要媒體是 INF 檔案。 系統會提供預設的安全性描述元,而且在大部分情況下,您不需要覆寫這些描述元。

裝置和介面的安全性設定

系統會為所有 系統提供的裝置安裝類別提供預設的安全性描述元。 一般而言,這些描述項允許系統管理員的完整存取權,以及使用者的讀取/寫入/執行存取權。 (控制裝置存取的安全性描述項也會控制裝置裝置 介面類別別的存取權,如果有的話。)

WDM 驅動程式的 INF 檔案可以指定每個類別或每個裝置的安全性設定,以覆寫系統的預設設定。 建立新裝置安裝類別的廠商應該為 類別指定安全性描述元。 一般而言,不需要指定裝置特定的安全性描述元。 如果屬於相同類別的不同裝置類型具有明顯不同類型的使用者,則提供裝置特定的安全性描述元可能會很有用。

若要指定屬於 WDM 裝置安裝類別之所有裝置的安全性描述項,請在類別安裝程式 INF 檔案的INF ClassInstall32 區段中使用INF AddReg 指示詞AddReg指示詞必須指向add-registry-section,以設定DeviceType和安全性登錄專案的值。 這些登錄值會為指定之裝置類型的所有裝置指定安全性描述項。

若要為屬於 WDM 裝置設定類別的單一裝置指定安全性描述項,請在裝置INF 檔案的 INF DDInstall.HW 區段中使用INF AddReg 指示詞AddReg指示詞必須指向add-registry-section,以設定DeviceType和安全性登錄專案的值。 這些登錄值會針對符合相關聯INF 模型區段所指定硬體識別碼相容識別碼的所有裝置,指定安全描述項。

根據預設,系統會將裝置的安全性描述項設定套用至要求,以開啟代表裝置 (的裝置物件,例如,開啟 NT 裝置名稱為 \Device\DeviceName) 的要求。

不過,系統預設不會將裝置的安全性描述項集套用至要求,以在裝置的命名空間中開啟物件,其中裝置命名空間包含名稱格式為 \Device\DeviceName\ObjectName的所有物件。 若要確保相同的安全性設定會套用至開啟裝置命名空間中物件的要求,請設定裝置的FILE_DEVICE_SECURE_OPEN裝置特性旗標。 如需安全裝置存取的詳細資訊,請參閱 控制 Windows 驅動程式 (的裝置命名空間存取) 。 如需如何設定FILE_DEVICE_SECURE_OPEN裝置特性旗標的資訊,請參閱 (Windows 驅動程式) 指定裝置特性

PnP 管理員會在呼叫驅動程式的 AddDevice 常式之後,在裝置物件上設定安全性值。 某些 WDM 驅動程式可以在呼叫 IoCreateDeviceSecure來建立實體裝置物件 (PDO) 時,指定裝置特定的安全性描述元。 如需詳細資訊,請參閱 保護裝置物件

驅動程式檔案的安全性設定

使用 INF CopyFiles 指示詞複製檔案時,可以指定 file-list-section安全性 區段。 本節會指定 CopyFiles 指示詞所複製之所有檔案的安全性描述項。 不過,如果安裝目的地是 %SystemRoot%的其中一個系統子目錄,廠商就不需要為驅動程式檔案指定安全性描述項。 (如需這些子目錄的詳細資訊,請參閱 使用 Dirids.) 系統為這些子目錄提供預設的安全性描述元,不應覆寫預設描述項。

驅動程式服務的安全性設定

在驅動程式 INF 檔案的 service-install-section 內, (請參閱 INF AddService 指示 詞) ,您可以包含 安全性 專案。 此專案會指定執行這類作業所需的許可權,例如啟動、停止和設定與裝置相關聯的驅動程式服務。 不過,系統會為驅動程式服務提供預設的安全性描述元,而且此預設描述元通常不需要覆寫。

裝置和驅動程式登錄專案的安全性設定

使用INF AddReg 指示詞在 INF檔案中指定登錄專案時,您可以包含add-registry-section每個add-registry-section 的安全性區段add-registry-section安全性區段會指定相關聯add-registry-section 區段所建立之已建立登錄專案的存取權限。 系統會針對 HKR 相對根底下建立的所有登錄專案,提供預設的安全性描述項。 因此,在相對根底下建立登錄專案時,您不需要指定安全性描述項。

WMI 類別的安全性設定

系統會將預設安全性描述項指派給識別 WMI 類別的 GUID。 針對 Windows XP 和舊版作業系統,WMI GUID 的預設安全性描述項允許所有使用者完整存取。 從 Windows Server 2003 開始,預設的安全性描述元只允許存取系統管理員。

如果您的驅動程式定義 WMI 類別,而且您不想使用這些類別的預設安全性描述元,您可以使用裝置 INF 檔案內的 INF DDInstall.WMI 區段 來提供安全性描述項。

正確使用 SetupAPI 函式

如果您的 驅動程式套件 包含安裝程式、共同安裝程式或其他呼叫 SetupAPI 函式的安裝應用程式,您必須遵循 使用 SetupAPI 的指導方針

測試安裝安全性設定

使用 SetupAPI 記錄 來確認已正確指定與安裝裝置相關聯的安全性設定。 將記錄層級設定為詳細資訊 (0x0000FFFF) ,然後嘗試各種安裝案例。

這類案例應該同時包含使用者帳戶和系統管理員帳戶的初始安裝和重新安裝。 在您安裝軟體之前,請嘗試插入您的裝置,反之亦然。

如果安裝成功,請檢視記錄檔,以確認未發生任何錯誤。 如果安裝失敗,請檢視記錄檔以判斷失敗的原因。

此外,在安裝完成之後,您可以執行下列動作:

  • 使用登錄編輯程式來檢視指派給登錄專案的安全性設定。

  • 使用 [我的電腦 ] 來檢視指派給檔案的安全性設定。