MsiGetPatchInfoExA 関数 (msi.h)

MsiGetPatchInfoEx 関数は、製品の指定されたインスタンスへのパッチの適用に関する情報を照会します。

構文

UINT MsiGetPatchInfoExA(
  [in]            LPCSTR            szPatchCode,
  [in]            LPCSTR            szProductCode,
  [in]            LPCSTR            szUserSid,
  [in]            MSIINSTALLCONTEXT dwContext,
  [in]            LPCSTR            szProperty,
  [out, optional] LPSTR             lpValue,
  [in, out]       LPDWORD           pcchValue
);

パラメーター

[in] szPatchCode

パッチの GUID を含む null で終わる文字列。 このパラメーターを NULL にすることはできません。

[in] szProductCode

製品インスタンスの ProductCode GUID を含む null で終わる文字列。 このパラメーターを NULL にすることはできません。

[in] szUserSid

クエリ対象のパッチのインスタンスが存在するセキュリティ識別子 (SID) を指定する null で終わる文字列。 NULL 値を使用すると、現在のユーザーが指定されます。

SID 説明
NULL
ログオンしているユーザーを指定します。
ユーザー SID
システム内の特定のユーザー ID の列挙を指定します。 次の例では、考えられるユーザー SID "S-1-3-64-2415071341-1358098788-3127455600-2561" を識別します。
 
メモ 特殊な SID 文字列 "S-1-5-18" (システム) を使用して、コンピューターごとにインストールされている製品を列挙することはできません。 dwContextMSIINSTALLCONTEXT_MACHINE場合、szUserSidNULL である必要があります。
 

[in] dwContext

列挙を、ユーザーごとのアンマネージド、ユーザーごとのマネージド、またはマシンごとのコンテキストに制限します。 このパラメーターには、次のいずれかの値を指定できます。

Context 説明
MSIINSTALLCONTEXT_USERMANAGED
1
szUserSid が指定するユーザーのすべてのユーザー管理インストールに拡張されるクエリ。
MSIINSTALLCONTEXT_USERUNMANAGED
2
szUserSid が指定するユーザーのすべてのユーザー非管理対象インストールに拡張されるクエリ。
MSIINSTALLCONTEXT_MACHINE
4
すべてのマシンごとのインストールに拡張されるクエリ。

[in] szProperty

取得するプロパティ値を指定する null で終わる文字列。 szProperty パラメーターには、次のいずれかを指定できます。

Name 意味
INSTALLPROPERTY_LOCALPACKAGE
"LocalPackage"
製品が使用するキャッシュされたパッチ ファイルを取得します。
INSTALLPROPERTY_TRANSFORMS
"Transforms"
最後のパッチ インストールが製品に適用された一連のパッチ変換を取得します。 この値は、ユーザーがログオンしていない場合は、ユーザーごとの非マネージド アプリケーションでは使用できない場合があります。
INSTALLPROPERTY_INSTALLDATE
"InstallDate"
この製品がサービスを最後に受信した時刻を取得します。 このプロパティの値は、パッチが適用または製品から削除されるたびに、または /v コマンド ライン オプションを使用して製品を修復するたびに置き換えられます。 製品が修復もパッチも受けたことがない場合、このプロパティの値は製品がこのコンピューターにインストールされた日時です。
INSTALLPROPERTY_UNINSTALLABLE
"Uninstallable"
パッチが製品からアンインストールできるものとしてマークされている場合、"1" を返します。 その場合でも、アンインストールできない別の更新プログラムでこの更新プログラムが必要な場合は、インストーラーによってアンインストールがブロックされる可能性があります。
INSTALLPROPERTY_PATCHSTATE
"State"
このパッチが製品に現在適用されている場合、"1" を返します。 このパッチが別のパッチによって置き換えられる場合は、"2" を返します。 この修正プログラムが古い場合は、"4" を返します。 これらの値は、MsiEnumPatchesExdwFilter パラメーターで使用される定数に対応します。
INSTALLPROPERTY_DISPLAYNAME
"DisplayName"
パッチの登録されている表示名を取得します。 MsiPatchMetadata テーブルに DisplayName プロパティが含まれていないパッチの場合、返される表示名は空の文字列 ("") になります。
INSTALLPROPERTY_MOREINFOURL
"MoreInfoURL"
パッチの登録されているサポート情報 URL を取得します。 MsiPatchMetadata テーブルに MoreInfoURL プロパティが含まれていないパッチの場合、返されるサポート情報 URL は空の文字列 ("") になります。

[out, optional] lpValue

このパラメーターは、プロパティ値を受け取るバッファーへのポインターです。 このバッファーは、情報を格納するのに十分な大きさにする必要があります。 バッファーが小さすぎる場合、関数は ERROR_MORE_DATA を返し、*pcchValue をプロパティ値の TCHAR の数 (終端の NULL 文字を含まない) に設定します。

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

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

[in, out] pcchValue

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

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

戻り値

MsiGetPatchInfoEx 関数は、次の値を返します。

リターン コード 説明
ERROR_ACCESS_DENIED
この関数は、十分な特権を持つリソースにアクセスできません。
ERROR_BAD_CONFIGURATION
構成データが破損しています。
ERROR_FUNCTION_FAILED
関数は失敗し、エラーは他のエラー コードでは識別されません。
ERROR_INVALID_PARAMETER
無効なパラメーターが関数に渡されます。
ERROR_MORE_DATA
この値は、指定されたバッファーに収まりません。
ERROR_SUCCESS
パッチが正常に列挙されました。
ERROR_UNKNOWN_PRODUCT
szProduct が指定する製品は、コンピューターにインストールされていません。
ERROR_UNKNOWN_PROPERTY
プロパティが認識されません。
ERROR_UNKNOWN_PATCH
パッチが認識されません。

解説

Windows インストーラー 2.0: サポートされていません。 この関数は、Windows インストーラー バージョン 3.0 以降で使用できます。

ユーザーは、表示されている製品インスタンスのパッチ データに対してクエリを実行できます。 管理者グループは、コンピューター上の任意の製品インスタンスと任意のユーザーのパッチ データに対してクエリを実行できます。 ユーザーがログオンしていない場合、すべての値がユーザー単位の非マネージド アプリケーションで使用できるわけではありません。

Note

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

要件

   
サポートされている最小のクライアント 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 インストーラーのバージョンで必要な最小 Windows サービス パックに関する情報については、Windows インストーラーの実行時の要件に関する記事を参照してください。
対象プラットフォーム Windows
ヘッダー msi.h
Library Msi.lib
[DLL] Msi.dll

関連項目

ProductCode

パッチの削除