MsiEnumProductsExA-Funktion (msi.h)

Die MsiEnumProductsEx-Funktion listet eine oder alle Instanzen von Produkten auf, die derzeit in den angegebenen Kontexten angekündigt oder installiert werden. Diese Funktion ersetzt MsiEnumProducts.

Syntax

UINT MsiEnumProductsExA(
  [in, optional]      LPCSTR            szProductCode,
  [in]                LPCSTR            szUserSid,
  [in]                DWORD             dwContext,
  [in]                DWORD             dwIndex,
  [out, optional]     CHAR [39]         szInstalledProductCode,
  [out, optional]     MSIINSTALLCONTEXT *pdwInstalledContext,
  [out, optional]     LPSTR             szSid,
  [in, out, optional] LPDWORD           pcchSid
);

Parameter

[in, optional] szProductCode

Productcode GUID des aufzuzählenden Produkts. Nur Instanzen von Produkten innerhalb des Durch die Parameter szUserSid und dwContext angegebenen Kontexts werden aufgezählt. Dieser Parameter kann auf NULL festgelegt werden, um alle Produkte im angegebenen Kontext aufzulisten.

[in] szUserSid

Null-beendete Zeichenfolge, die eine Sicherheits-ID (SID) angibt, die den Kontext der Enumeration einschränkt. Die spezielle SID-Zeichenfolge s-1-1-0 (Jeder) gibt die Enumeration für alle Benutzer im System an. Ein anderer SID-Wert als s-1-1-0 wird als Benutzer-SID betrachtet und beschränkt die Enumeration auf den aktuellen Benutzer oder einen beliebigen Benutzer im System. Dieser Parameter kann auf NULL festgelegt werden, um den Enumerationsbereich auf den aktuellen Benutzer einzuschränken.

SID-Typ Bedeutung
NULL
Gibt den aktuell angemeldeten Benutzer an.
Benutzer-SID
Gibt die Enumeration für einen bestimmten Benutzer im System an. Ein Beispiel für die Benutzer-SID ist "S-1-3-64-2415071341-1358098788-3127455600-2561".
s-1-1-0
Gibt die Enumeration für alle Benutzer im System an.
 
Hinweis Die spezielle SID-Zeichenfolge s-1-5-18 (System) kann nicht zum Aufzählen von Produkten oder Patches verwendet werden, die pro Computer installiert sind. Wenn dwContext auf nur MSIINSTALLCONTEXT_MACHINE festgelegt ist, muss szUserSidNULL sein.
 

[in] dwContext

Schränkt die Enumeration auf einen Kontext ein. Bei diesem Parameter kann es sich um einen beliebigen oder eine Kombination der in der folgenden Tabelle gezeigten Werte handeln.

Kontext Bedeutung
MSIINSTALLCONTEXT_USERMANAGED
Die Enumeration wurde auf alle benutzerspezifischen verwalteten Installationen für die von szUserSid angegebenen Benutzer erweitert. Eine ungültige SID gibt keine Elemente zurück.
MSIINSTALLCONTEXT_USERUNMANAGED
Die Enumeration wurde auf alle benutzerspezifischen und nicht verwalteten Installationen für die von szUserSid angegebenen Benutzer erweitert. Eine ungültige SID gibt keine Elemente zurück.
MSIINSTALLCONTEXT_MACHINE
Die Enumeration wurde auf alle Computerinstallationen erweitert. Wenn dwInstallContext auf nur MSIINSTALLCONTEXT_MACHINE festgelegt ist, muss der szUserSID-ParameterNULL sein.

[in] dwIndex

Gibt den Index des abzurufenden Produkts an. Dieser Parameter muss für den ersten Aufruf der MsiEnumProductsEx-Funktion null sein und dann für nachfolgende Aufrufe inkrementiert werden. Der Index sollte nur erhöht werden, wenn der vorherige Aufruf ERROR_SUCCESS zurückgegeben hat. Da die Produkte nicht sortiert werden, verfügen alle neuen Produkte über einen beliebigen Index. Daher kann die Funktion Produkte in beliebiger Reihenfolge zurückgeben.

[out, optional] szInstalledProductCode

Null-terminierte Zeichenfolge von TCHAR, die die ProductCode-GUID des aufgezählten Produkts instance angibt. Dieser Parameter kann NULL sein.

[out, optional] pdwInstalledContext

Gibt den Kontext des aufgezählten Produkts instance zurück. Der Ausgabewert kann MSIINSTALLCONTEXT_USERMANAGED, MSIINSTALLCONTEXT_USERUNMANAGED oder MSIINSTALLCONTEXT_MACHINE sein. Dieser Parameter kann NULL sein.

[out, optional] szSid

Ein Ausgabepuffer, der die Zeichenfolgen-SID des Kontos empfängt, unter dem dieses Produkt instance vorhanden ist. Dieser Puffer gibt eine leere Zeichenfolge für eine instance zurück, die in einem Computerkontext installiert ist.

Dieser Puffer sollte groß genug sein, um die SID zu enthalten. Wenn der Puffer zu klein ist, gibt die Funktion ERROR_MORE_DATA zurück und legt *pcchSid auf die Anzahl von TCHAR in der SID fest, ohne das abschließende NULL-Zeichen.

Wenn szSid auf NULL und pcchSid auf einen gültigen Zeiger festgelegt ist, gibt die Funktion ERROR_SUCCESS zurück und legt *pcchSid auf die Anzahl von TCHAR im Wert fest, ohne den abschließenden NULL-Wert. Die Funktion kann dann erneut aufgerufen werden, um den Wert abzurufen, wobei der szSid-Puffer groß genug ist, um *pcchSid + 1 Zeichen zu enthalten.

Wenn szSid und pcchSid beide auf NULL festgelegt sind, gibt die Funktion ERROR_SUCCESS zurück, wenn der Wert vorhanden ist, ohne den Wert abzurufen.

[in, out, optional] pcchSid

Beim Aufrufen der Funktion sollte dieser Parameter ein Zeiger auf eine Variable sein, die die Anzahl von TCHAR im szSid-Puffer angibt. Wenn die Funktion zurückgibt, wird dieser Parameter auf die Größe des angeforderten Werts festgelegt, unabhängig davon, ob die Funktion den Wert in den angegebenen Puffer kopiert oder nicht. Die Größe wird als Anzahl von TCHAR im angeforderten Wert zurückgegeben, ohne das abschließende NULL-Zeichen.

Dieser Parameter kann nur auf NULL festgelegt werden, wenn szSid ebenfalls NULL ist. Andernfalls gibt die Funktion ERROR_INVALID_PARAMETER zurück.

Rückgabewert

Die MsiEnumProductsEx-Funktion gibt einen der folgenden Werte zurück.

Rückgabecode Beschreibung
ERROR_ACCESS_DENIED
Wenn der Bereich andere Benutzer als den aktuellen Benutzer enthält, benötigen Sie Administratorrechte.
ERROR_BAD_CONFIGURATION
Die Konfigurationsdaten sind beschädigt.
ERROR_INVALID_PARAMETER
Es wurde ein ungültiger Parameter an die Funktion übergeben.
ERROR_NO_MORE_ITEMS
Es gibt keine Produkte mehr, die aufgezählt werden müssen.
ERROR_SUCCESS
Ein Produkt wird aufgezählt.
ERROR_MORE_DATA
Der szSid-Parameter ist zu klein, um die Benutzer-SID abzurufen.
ERROR_UNKNOWN_PRODUCT
Das Produkt ist im angegebenen Kontext nicht auf dem Computer installiert.
ERROR_FUNCTION_FAILED
Ein unerwarteter interner Fehler.

Hinweise

Um Produkte aufzulisten, muss eine Anwendung zunächst die MsiEnumProductsEx-Funktion aufrufen, wobei der iIndex-Parameter auf null festgelegt ist. Die Anwendung muss dann den iProductIndex-Parameter erhöhen und MsiEnumProductsEx aufrufen, bis ERROR_NO_MORE_ITEMS zurückgegeben wird und keine weiteren Produkte aufgelistet werden müssen.

Wenn Sie mehrere Aufrufe von MsiEnumProductsEx ausführen, um alle Produkte aufzulisten, muss jeder Aufruf aus demselben Thread erfolgen.

Ein Benutzer muss über Administratorrechte verfügen, um Produkte für alle Benutzerkonten oder ein anderes Benutzerkonto als das aktuelle Benutzerkonto aufzulisten. Die Enumeration überspringt Produkte, die nur angekündigt werden (z. B. Produkte, die nicht installiert sind) im Pro-Benutzer-nicht verwalteten Kontext, wenn alle Benutzer oder ein anderer Benutzer als der aktuelle Benutzer aufgezählt werden.

Verwenden Sie MsiGetProductInfoEx, um den Status oder andere Informationen zu den einzelnen Produkten abzurufen, die von MsiEnumProductsEx aufgezählt instance.

Hinweis

Der msi.h-Header definiert MsiEnumProductsEx als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht Codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Installer 5.0 unter Windows Server 2012, Windows 8, Windows Server 2008 R2 oder Windows 7. Windows Installer 4.0 oder Windows Installer 4.5 unter Windows Server 2008 oder Windows Vista. Windows Installer 3.0 oder höher unter Windows Server 2003 oder Windows XP. Informationen zum mindestens erforderlichen Windows Service Pack für eine Windows Installer-Version finden Sie unter Windows Installer – Laufzeitanforderungen.
Zielplattform Windows
Kopfzeile msi.h
Bibliothek Msi.lib
DLL Msi.dll

Weitere Informationen

MsiEnumProducts

In Windows Installer 2.0 und früher nicht unterstützt

ProductCode

Entfernen von Patches