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 の種類 | 意味 |
---|---|
|
現在ログオンしているユーザーを指定します。 |
|
システム内の特定のユーザーの列挙を指定します。 ユーザー SID の例として、"S-1-3-64-2415071341-1358098788-3127455600-2561" があります。 |
|
システム内のすべてのユーザーの列挙を指定します。 |
[in] dwContext
列挙をコンテキストに制限します。 このパラメーターには、次の表に示す値の任意の 1 つまたは組み合わせを指定できます。
[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 文字は含まない) に設定します。
[in, out, optional] pcchSid
関数を呼び出すとき、このパラメーターは、szSid バッファー内の TCHAR の数を指定する変数へのポインターである必要があります。 関数が戻るときに、関数が指定したバッファーに値をコピーするかどうかに関係なく、このパラメーターは要求された値のサイズに設定されます。 サイズは、要求された値 TCHAR の数として返されます。終端の null 文字は含まれません。
このパラメーターは、
戻り値
MsiEnumProductsEx 関数は、次のいずれかの値を返します。
リターン コード | 形容 |
---|---|
|
スコープに現在のユーザー以外のユーザーが含まれている場合は、管理者特権が必要です。 |
|
構成データが破損しています。 |
|
無効なパラメーターが関数に渡されました。 |
|
列挙する製品はこれ以上ありません。 |
|
製品が列挙されます。 |
|
szSid パラメーターが小さすぎてユーザー SID を取得していません。 |
|
指定されたコンテキストでは、製品がコンピューターにインストールされていません。 |
|
予期しない内部エラー。 |
備考
製品を列挙するには、iIndex パラメーターを 0 に設定して、最初に 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 |
関連項目
Windows インストーラー 2.0 以前の ではサポートされていません
ProductCode を
パッチ を削除する