使用 Windows Installer 清查產品和修補程式
具有系統管理許可權的使用者和應用程式可以使用 Windows Installer 函式來清查系統上安裝的 Windows Installer 應用程式、功能、元件和修補程式。
從 Windows Installer 3.0 開始,具有系統管理員許可權的使用者和應用程式可以列舉所有使用者安裝在系統上的 Windows Installer 應用程式、功能、元件和修補程式。 系統管理員和應用程式可以取得特定用戶或系統中所有用戶的產品或修補程序資訊。 應用程式可以取得特定使用者的功能狀態或元件狀態。
從 Windows Installer 3.0 開始提供的清查功能可以依據安裝語境和使用者語境來限制可找到的項目範圍。 有三種可能的安裝環境:每位使用者、每台電腦和由使用者管理。 用戶內容可以是特定使用者或系統中的所有使用者。
早於 Windows Installer 3.0 的 Windows Installer 清查函式版本只能列舉安裝在系統的「電腦層級」內容或「目前使用者的個人層級」內容中的專案。 這項限制可防止目前使用者以外的使用者完整清查系統中安裝的所有 Windows Installer 產品和修補程式。
列舉產品
使用 MsiEnumProductsEx 函式來列舉系統中安裝的 Windows Installer 應用程式。 此函式可尋找目前使用者和系統中其他使用者之應用程式之每一計算機安裝與個別使用者安裝(受控和非受控)。 使用 dwContext 參數來指定要找到的安裝內容。 您可以指定任何一種或任意組合的可能安裝內容。 使用 szUserSid 參數來指定要找到之應用程式的用戶內容。
列舉修補程式
使用 MsiEnumPatchesEx 函式來尋找應用程式所套用的修補程式。 此函式可以找到針對特定應用程式或系統中所有應用程式所套用的修補程式。 此函式可以找到套用至目前使用者和系統中其他使用者之應用程式之所有每部計算機安裝及個別使用者安裝修補程式。
您可以使用安裝內容和用戶內容,將修補程式列舉限制為特定內容或跨所有內容。 使用 dwContext 參數來指定要找到的安裝內容。 您可以指定任何一種或任意組合的可能安裝內容。 使用 szUserSid 參數來指定要找到之應用程式的用戶內容。
列舉系統 中所有使用者所公告或安裝之所有產品的修補程式
- 呼叫 MsiEnumPatchesEx 函式。
- 針對 szProductCode 參數的值,使用 NULL。
- 使用“s-1-1-0”作為 szUserSid 參數的值。
- 對於 dwContext 參數的值,使用 “MSIINSTALLCONTEXT_ALL”。
列舉系統 中所有使用者所公告或安裝之所有產品的修補程式
呼叫 MsiEnumProductsEx 函式。
- 針對 szProductCode 參數的值,使用 NULL。
- 使用 "s-1-1-0" 作為 szUserSid 參數的值。
- 請使用“MSIINSTALLCONTEXT_ALL”作為 dwContext 參數的值。
函式會為每個找到的應用程式提供產品代碼、用戶內容和安裝內容。
針對步驟 1 中列舉的每個應用程式,呼叫 MsiEnumPatchesEx 以列舉修補程式。
使用從 MsiEnumProductsEx 取得的產品代碼、使用者內容和安裝背景,針對 szProductCode、szUserSid、dwContext以及每次 MsiEnumProductsEx 函數調用進行操作。
取得產品資訊
使用 MsiGetProductInfoEx 函式來取得系統上公告或安裝之應用程式的相關信息,以及可擷取的屬性。 此函式可以取得安裝在非當前使用者帳戶下的應用程式實例的資訊,但無法查詢在非當前使用者帳戶下以每位使用者未受管理的內容宣告的產品實例。
您可以指定安裝內容和用戶內容,以限制在特定內容中安裝之應用程式的資訊。 使用 dwContext 參數來指定要找到的安裝內容。 您只能指定其中一個可能的安裝情境。 使用 szUserSid 參數來指定要找到之應用程式的用戶內容。
取得修補程序資訊
應用程式可以呼叫 MsiGetPatchInfoEx 函式,以查詢關於將修補程式應用到產品指定實例的信息。 使用此函數即可擷取 LocalPackage、Transforms和 State 等屬性。 若使用者目前未登入電腦,則不保證所有屬性值皆可供個別使用者的 unmanaged 應用程式使用。 您只能指定其中一個可能的安裝環境。
您可以指定安裝內容和用戶內容,以將資訊限制為套用至特定內容中安裝之應用程式的修補程式。 使用 dwContext 參數來指定要找到的安裝內容。 您只能指定其中一個可能的安裝環境。 使用 szUserSid 參數來指定要找到之應用程式的用戶內容。
取得元件狀態資訊
應用程式可以呼叫 MsiQueryComponentState 函式,以取得元件的安裝狀態。 此函式會判斷元件是否已安裝在本機或安裝以從來源執行。 函式可以查詢目前使用者以外的用戶帳戶下所安裝之應用程式實例的元件,前提是產品不會在目前使用者以外的用戶帳戶的每個使用者 Unmanaged 內容下公告。
您可以指定安裝內容和用戶內容,以取得在特定內容中安裝之應用程式的元件狀態。 使用 dwContext 參數來指定要找到的安裝內容。 您只能指定其中一個可能的安裝環境。 使用 szUserSid 參數來指定要找到之應用程式的用戶內容。
取得功能狀態資訊
應用程式可以呼叫 MsiQueryFeatureStateEx 函式,以取得產品功能的已安裝狀態。 此函式會判斷此功能是否已被宣告、在本機安裝或安裝以便從來源執行。 函式可用來查詢在計算機帳戶下安裝之應用程式實例的任何特性,或是目前使用者帳戶下的任何情境,或目前使用者以外的任何用戶帳戶下的逐個使用者管理的情境。 此函式無法查詢除目前使用者之外的用戶帳戶中,以每位使用者的非受控狀態安裝的應用程式。 您只能指定其中一個可能的安裝內容。
您可以指定安裝內容和用戶內容,以取得在特定內容中安裝之應用程式的功能狀態。 使用 dwContext 參數來指定要找到的安裝內容。 您只能指定其中一個可能的安裝情境。 使用 szUserSid 參數來指定要找到之應用程式的用戶內容。