共用方式為


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
網域 格式化 Y Y
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