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.
[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.
[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 |
---|---|
|
Wenn der Bereich andere Benutzer als den aktuellen Benutzer enthält, benötigen Sie Administratorrechte. |
|
Die Konfigurationsdaten sind beschädigt. |
|
An die Funktion wurde ein ungültiger Parameter übergeben. |
|
Es gibt keine weiteren Produkte, die aufgezählt werden sollen. |
|
Ein Produkt wird aufgezählt. |
|
Der szSid Parameter ist zu klein, um die Benutzer-SID abzurufen. |
|
Das Produkt ist nicht auf dem Computer im angegebenen Kontext installiert. |
|
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
in Windows Installer 2.0 und früheren nicht unterstützt