共用方式為


LockPermissions 數據表

LockPermissions 數據表是用來保護鎖定環境中應用程式個別部分的安全。 它可以與檔案、登錄機碼和已建立資料夾的安裝搭配使用。

要安裝在 Windows Server 2008 R2 或 Windows 7 中的套件應該使用 MsiLockPermissionsEx Table,而不是 LockPermissions 數據表 。 Windows Installer 5.0 之前的 Windows Installer 版本會忽略 MsiLockPermissionsEx 數據表。 Windows Installer 5.0 可以安裝包含 LockPermissions 數據表的套件。 從 Windows Installer 5.0 開始,安裝包含 MsiLockPermissionsEx Table 和 LockPermissions Table 的套件會失敗,並傳回 Windows Installer 錯誤訊息 1941。

LockPermissions 數據表具有下列數據行。

資料行 類型 機碼 Nullable
LockObject Identifier
Table Text
網域 格式化
User 格式化
權限 DoubleInteger

 

資料行

LockObject

此數據行和數據表數據行一起指定要保護的檔案、目錄或登錄機碼。 LockObject 資料行是指向 Table 資料行所指定資料表主鍵的外鍵。

桌子

此數據行和 LockObject 資料行會指定要保護的檔案、目錄或登錄機碼。 在 [數據表] 數據行中,輸入 File、Registry 或 CreateFolder 來指定 File Table、Registry Table 或 CreateFolder 數據表中列出的 LockObject。

數據行,識別要設定許可權之使用者的網域。 這是獨立電腦或功能變數名稱。 數據行數據類型為 Formatted,您可以使用此欄位中的字串 [%USERDOMAIN] 來取得目前網域的 USERDOMAIN 環境變數值。 若要取得任何其他網域,請使用 自定義動作。 如需詳細資訊,請參閱自定義動作數據表。

使用者

數據行,可識別要設定許可權之使用者的當地語系化名稱。 此名稱必須位於電腦或網域上。 如果計算機或域控制器無法辨識網域和用戶組合,或無法擷取使用者的安全標識碼(SID),安裝就會失敗。 您可以為單一 LockObject 指定多個使用者。

通用使用者名稱 「Everyone」 和 「Administrators」 可能以英文輸入,並對應至已知的 SID。 LocalSystem 會在透過LockPermissions資料表所建立的所有安全性描述元中獲得完整控制。 您可以使用此欄位中的 ComputerName 屬性LogonUser 屬性USERNAME 屬性來取得目前的使用者。 需要自定義動作,才能輸入任何其他使用者或群組的當地語系化名稱。

您可以使用多個記錄搭配相同的 LockObject 和 Table 專案(但不同的使用者專案)來指定多個使用者的存取控制清單。

許可

識別系統許可權整數描述的數據行。 下列提供最常用的值(Winnt.h 中存在完整清單)。

權限 描述
GENERIC_ALL
0X10000000
268435456
讀取、寫入和執行存取權
GENERIC_EXECUTE
0X20000000
536870912
執行存取權
GENERIC_WRITE
0X40000000
1073741824
寫入存取

 

您無法在 [許可權] 資料列中指定GENERIC_READ。 嘗試這樣做將會失敗。 相反地,您必須指定值,例如KEY_READ或FILE_GENERIC_READ。

在此數據行中輸入的 Null 會保留供日後使用。

備註

Sequence 數據表中的 InstallFiles、WriteRegistryValuesCreateFolders 動作會處理此數據表中的資訊。 如需使用 時序表的詳細資訊,請參閱 使用時序表

許可權只能在 LockPermissions 資料表中設定,供已存在於電腦或網域的使用者使用。 嘗試設定未知使用者的許可權會導致安裝失敗,即使該用戶帳戶是在安裝期間透過延後自定義動作建立也一樣。

建議將系統管理員的本地組包含在所有訪問控制清單中(ACL)。 這可確保系統管理員可以存取和維護物件。

LockPermissions 數據表中列出的每個檔案、登錄機碼或目錄都會接收明確的安全性描述元,無論它是否取代現有的物件。 Windows Installer 會嘗試在系統上已經存在的物件上保留安全性。 如果物件未列在 LockPermissions 數據表中,並取代現有的物件,取代會取得它所取代之對象的安全性設定。

如果物件未列在 LockPermissions 數據表中,而且不會取代現有的物件,它就不會收到明確的安全性描述元。 對新物件的存取是以其父物件或容器對象的屬性為基礎。 如果物件未列在數據表中,並且以沒有明確的安全性描述元取代物件,則新物件的存取是以其父物件或容器對象的屬性為基礎。

Windows Installer 會將 UserSID 屬性設定為安全性識別碼 (SID ) 或執行安裝的使用者。

驗證

ICE03
ICE06
ICE46
ICE55