次の方法で共有


MsiEnumProductsExW 関数 (msi.h)

MsiEnumProductsEx 関数は、指定されたコンテキストで現在アドバタイズまたはインストールされている製品の 1 つまたはすべてのインスタンスを列挙します。 この関数は、MsiEnumProducts置き換えられます。

構文

UINT MsiEnumProductsExW(
  [in, optional]      LPCWSTR           szProductCode,
  [in]                LPCWSTR           szUserSid,
  [in]                DWORD             dwContext,
  [in]                DWORD             dwIndex,
  [out, optional]     WCHAR [39]        szInstalledProductCode,
  [out, optional]     MSIINSTALLCONTEXT *pdwInstalledContext,
  [out, optional]     LPWSTR            szSid,
  [in, out, optional] LPDWORD           pcchSid
);

パラメーター

[in, optional] szProductCode

ProductCode 、列挙する製品の GUID を します。 szUserSid および dwContext パラメーターによって指定されたコンテキストのスコープ内の製品のインスタンスのみが列挙されます。 このパラメーターを NULL 設定して、指定したコンテキスト内のすべての製品を列挙できます。

[in] szUserSid

列挙体のコンテキストを制限するセキュリティ識別子 (SID) を指定する null で終わる文字列。 特殊な SID 文字列 s-1-1-0 (Everyone) は、システム内のすべてのユーザーの列挙を指定します。 s-1-1-0 以外の SID 値はユーザー SID と見なされ、列挙は現在のユーザーまたはシステム内の任意のユーザーに制限されます。 このパラメーターを null 設定して、列挙スコープを現在のユーザーに制限できます。

SID の種類 意味
NULL
現在ログオンしているユーザーを指定します。
ユーザー SID の
システム内の特定のユーザーの列挙を指定します。 ユーザー SID の例として、"S-1-3-64-2415071341-1358098788-3127455600-2561" があります。
s-1-1-0
システム内のすべてのユーザーの列挙を指定します。
 
特別な SID 文字列 s-1-5-18 (システム) を使用して、コンピューターごとにインストールされている製品またはパッチを列挙することはできません。 dwContext が MSIINSTALLCONTEXT_MACHINE のみに設定されている場合、szUserSid は NULLする必要があります。
 

[in] dwContext

列挙をコンテキストに制限します。 このパラメーターには、次の表に示す値の任意の 1 つまたは組み合わせを指定できます。

文脈 意味
MSIINSTALLCONTEXT_USERMANAGED
szUserSidで指定されたユーザーのすべてのユーザー管理インストール 拡張された列挙。 無効な SID は項目を返しません。
MSIINSTALLCONTEXT_USERUNMANAGED
szUserSidで指定されたユーザーに対するすべてのユーザーごとのアンマネージド インストール 拡張された列挙。 無効な SID は項目を返しません。
MSIINSTALLCONTEXT_MACHINE
すべてのマシンごとのインストールに拡張された列挙。 dwInstallContext が MSIINSTALLCONTEXT_MACHINE のみに設定されている場合、szUserSID パラメーターは NULLする必要があります。

[in] dwIndex

取得する製品のインデックスを指定します。 このパラメーターは、MsiEnumProductsEx 関数の最初の呼び出しでは 0 で、その後の呼び出しではインクリメントする必要があります。 前の呼び出しがERROR_SUCCESS返された場合にのみ、インデックスをインクリメントする必要があります。 製品は注文されないため、新しい製品には任意のインデックスがあります。 これは、関数が任意の順序で製品を返すことができることを意味します。

[out, optional] szInstalledProductCode

列挙 製品インスタンスの ProductCode GUID を提供する、TCHAR の null で終わる文字列。 このパラメーターは NULLできます。

[out, optional] pdwInstalledContext

列挙される製品インスタンスのコンテキストを返します。 出力値は、MSIINSTALLCONTEXT_USERMANAGED、MSIINSTALLCONTEXT_USERUNMANAGED、またはMSIINSTALLCONTEXT_MACHINEできます。 このパラメーターは NULLできます。

[out, optional] szSid

この製品インスタンスが存在するアカウントの文字列 SID を受け取る出力バッファー。 このバッファーは、マシンごとのコンテキストでインストールされたインスタンスの空の文字列を返します。

このバッファーは、SID を格納するのに十分な大きさにする必要があります。 バッファーが小さすぎる場合、関数はERROR_MORE_DATAを返し、*pcchSid を SID 内の TCHAR の数 (終端の NULL 文字は含まない) に設定します。

szSid が NULL に設定され、pcchSid が有効なポインターに設定されている場合、この関数はERROR_SUCCESSを返し、*pcchSid を値に TCHAR の数に設定します(終端 NULLは含まれません)。 その後、この関数を再度呼び出して値を取得できます。szSid バッファーは、 *pcchSid + 1 文字を含むのに十分な大きさです。

szSidpcchSid の両方が null設定されている場合、値が存在する場合は、値を取得せずにERROR_SUCCESSを返します。

[in, out, optional] pcchSid

関数を呼び出すとき、このパラメーターは、szSid バッファー内の TCHAR の数を指定する変数へのポインターである必要があります。 関数が戻るときに、関数が指定したバッファーに値をコピーするかどうかに関係なく、このパラメーターは要求された値のサイズに設定されます。 サイズは、要求された値 TCHAR の数として返されます。終端の null 文字は含まれません。

このパラメーターは、szSid も NULL場合にのみ、NULL を に設定できます。それ以外の場合、関数はERROR_INVALID_PARAMETERを返します。

戻り値

MsiEnumProductsEx 関数は、次のいずれかの値を返します。

リターン コード 形容
ERROR_ACCESS_DENIED
スコープに現在のユーザー以外のユーザーが含まれている場合は、管理者特権が必要です。
ERROR_BAD_CONFIGURATION
構成データが破損しています。
ERROR_INVALID_PARAMETER
無効なパラメーターが関数に渡されました。
ERROR_NO_MORE_ITEMS
列挙する製品はこれ以上ありません。
ERROR_SUCCESS
製品が列挙されます。
ERROR_MORE_DATA
szSid パラメーターが小さすぎてユーザー SID を取得していません。
ERROR_UNKNOWN_PRODUCT
指定されたコンテキストでは、製品がコンピューターにインストールされていません。
ERROR_FUNCTION_FAILED
予期しない内部エラー。

備考

製品を列挙するには、iIndex パラメーターを 0 に設定して、最初に MsiEnumProductsEx 関数を呼び出す必要があります。 その後、アプリケーションは iProductIndex パラメーターをインクリメントし、ERROR_NO_MORE_ITEMS を返し、列挙する製品がなくなったまで MsiEnumProductsEx 呼び出す必要があります。

すべての製品を列挙するために MsiEnumProductsEx に対して複数の呼び出しを行う場合、各呼び出しは同じスレッドから行う必要があります。

すべてのユーザー アカウントまたは現在のユーザー アカウント以外のユーザー アカウントに製品を列挙するには、ユーザーに管理者特権が必要です。 列挙では、すべてのユーザーまたは現在のユーザー以外のユーザーを列挙するときに、ユーザーごとのアンマネージド コンテキストでアドバタイズされる製品 (インストールされていない製品など) のみがスキップされます。

MsiGetProductInfoEx を使用して、MsiEnumProductsExによって列挙された各製品インスタンスに関する状態またはその他の情報を取得します。

手記

msi.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして MsiEnumProductsEx を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows Server 2012、Windows 8、Windows Server 2008 R2、または Windows 7 の Windows インストーラー 5.0。 Windows Server 2008 または Windows Vista の Windows インストーラー 4.0 または Windows インストーラー 4.5。 Windows Server 2003 または Windows XP の Windows インストーラー 3.0 以降。 Windows インストーラーのバージョンで必要な最小 Windows Service Pack の詳細については、Windows インストーラーの Run-Time 要件を参照してください。
ターゲット プラットフォーム の ウィンドウズ
ヘッダー msi.h
ライブラリ Msi.lib
DLL Msi.dll

関連項目

MsiEnumProducts

Windows インストーラー 2.0 以前の ではサポートされていません

ProductCode を する

パッチ を削除する