Freigeben über


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 sind. 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 zu aufzählenden Produkts. Es werden nur Instanzen von Produkten im Rahmen des Kontexts aufgelistet, der durch die szUserSid und dwContext Parameter angegeben wird. Dieser Parameter kann auf NULL- festgelegt werden, um alle Produkte im angegebenen Kontext aufzählen zu können.

[in] szUserSid

Null-beendete Zeichenfolge, die einen Sicherheitsbezeichner (SID) angibt, der 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 gilt als Benutzer-SID und schränkt die Enumeration auf den aktuellen Benutzer oder einen beliebigen Benutzer im System ein. 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 Aufzählung 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 Aufzählung 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- nur auf MSIINSTALLCONTEXT_MACHINE festgelegt ist, muss szUserSid-NULL-sein.
 

[in] dwContext

Beschränkt die Aufzählung auf einen Kontext. Dieser Parameter kann eine beliebige oder eine Kombination der werte sein, die in der folgenden Tabelle angezeigt werden.

Zusammenhang Bedeutung
MSIINSTALLCONTEXT_USERMANAGED
Die Aufzählung wurde auf alle vom Benutzer verwalteten Installationen für die von szUserSidangegebenen Benutzer erweitert. Eine ungültige SID gibt keine Elemente zurück.
MSIINSTALLCONTEXT_USERUNMANAGED
Die Aufzählung wurde auf alle nicht verwalteten Installationen pro Benutzer für die von szUserSidangegebenen Benutzer erweitert. Eine ungültige SID gibt keine Elemente zurück.
MSIINSTALLCONTEXT_MACHINE
Die Aufzählung wurde auf alle Installationen pro Computer erweitert. Wenn dwInstallContext- nur auf MSIINSTALLCONTEXT_MACHINE festgelegt ist, muss der szUserSID Parameter NULL-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 erhöht werden. Der Index sollte nur erhöht werden, wenn der vorherige Aufruf ERROR_SUCCESS zurückgegeben hat. Da Produkte nicht bestellt werden, hat jedes neue Produkt einen beliebigen Index. Dies bedeutet, dass die Funktion Produkte in beliebiger Reihenfolge zurückgeben kann.

[out, optional] szInstalledProductCode

Null-beendete Zeichenfolge von TCHAR-, die die ProductCode- GUID der aufgezählten Produktinstanz angibt. Dieser Parameter kann NULL-sein.

[out, optional] pdwInstalledContext

Gibt den Kontext der Aufzählung der Produktinstanz 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 diese Produktinstanz vorhanden ist. Dieser Puffer gibt eine leere Zeichenfolge für eine Instanz 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 der TCHAR- in der SID zurück, nicht einschließlich des endenden NULL-Zeichens.

Wenn szSid- auf NULL- festgelegt ist und pcchSid- auf einen gültigen Zeiger festgelegt ist, gibt die Funktion ERROR_SUCCESS zurück und legt *pcchSid auf die Anzahl der TCHAR- im Wert fest, nicht einschließlich der endierenden NULL-. 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 der TCHAR- im szSid- Puffer angibt. Wenn die Funktion zurückgegeben wird, wird dieser Parameter auf die Größe des angeforderten Werts festgelegt, unabhängig davon, ob die Funktion den Wert in den angegebenen Puffer kopiert. Die Größe wird als Die Anzahl der TCHAR- im angeforderten Wert zurückgegeben, nicht einschließlich des endenden Nullzeichens.

Dieser Parameter kann nur auf NULL- festgelegt werden, wenn szSid- auch 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
An die Funktion wurde ein ungültiger Parameter übergeben.
ERROR_NO_MORE_ITEMS
Es gibt keine weiteren Produkte, die aufgezählt werden sollen.
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 nicht auf dem Computer im angegebenen Kontext installiert.
ERROR_FUNCTION_FAILED
Unerwarteter interner Fehler.

Bemerkungen

Zum Aufzählen von Produkten muss eine Anwendung zunächst die MsiEnumProductsEx--Funktion aufrufen, wobei der iIndex- Parameter auf Null festgelegt ist. Die Anwendung muss dann den iProductIndex Parameter inkrementieren und MsiEnumProductsEx- aufrufen, bis es ERROR_NO_MORE_ITEMS zurückgibt, und es gibt keine weiteren Produkte, die aufgezählt werden sollen.

Wenn Sie mehrere Aufrufe an MsiEnumProductsEx durchführen, um alle Produkte aufzählen zu können, 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 auflisten zu können. Die Enumeration überspringt Produkte, die nur angekündigt werden (z. B. produkte, die nicht installiert sind) im kontextbezogenen 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 jeder Produktinstanz abzurufen, die von MsiEnumProductsExaufgelistet wird.

Anmerkung

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
mindestens unterstützte 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 von einer Windows Installer-Version erforderlichen Windows-Service Pack finden Sie unter den Windows Installer-Run-Time Anforderungen.
Zielplattform- Fenster
Header- msi.h
Library Msi.lib
DLL- Msi.dll

Siehe auch

MsiEnumProducts-

in Windows Installer 2.0 und früheren nicht unterstützt

ProductCode-

Entfernen von Patches