アプリケーション互換性データベース
互換性インフラストラクチャでは、データベースを使用して、アプリケーションの互換性の問題とその解決策が特定されます。 このデータベースは、拡張子が .sdb のインデックス付きバイナリ ファイルです。 互換性インフラストラクチャには、データベースにアクセスするためのプログラミング インターフェイスが用意されています。
互換性の問題は、実行時にアプリケーション単位で対処できます。 データベースで指定された各アプリケーションには、ソリューションを必要とするコンポーネントが 1 つ以上含まれています。 コンポーネントは、ファイル属性 (チェックサムなど) を使用して全般的に記述された実行可能ファイルです。
各アプリケーションのデータベース検索とソリューションの決定プロセスは、マッチングと呼ばれます。 ファイル属性と、.exe ファイルを含むフォルダーまたはサブフォルダーに関連付けられているファイルの存在を使用して、一意の一致を作成することができます。 関連付けられているファイルは、一致するファイルと呼ばれます。
TAG は、データベース内のエントリと属性の一意識別子です。 TAG の型は、TAG に関連付けられているデータの形式を示しています。 たとえば、TAG_NAME は TAG_TYPE_STRINGREF 型です。TAG_NAME のデータは名前文字列です。 TAGID は、特定のデータベース内のエントリへのポインターです。 TAGREF は、複数のデータベースで使用できるエントリへのポインターです。
ファイル属性は、ディスク上のファイルに関連付けられているメタデータです。 これらの属性には、ファイル名、ファイル サイズ、チェックサム、バージョン、日付が含まれています。 これらの属性は、システムによって読み込まれるファイルがデータベース エントリと一致するかどうかを判別するために使用されます。 したがって、これらのファイル属性は、一致する属性とも呼ばれます。
ソリューション
アプリケーションのコンポーネントに適用される最も一般的なソリューションは、Apphelp と Appfix です。
Apphelp を使用すると、ローカライズされたカスタム メッセージ通知が表示されます (通常はアプリケーションがインストールまたは起動されたとき)。 互換性の問題について説明し、アプリケーションの実行を続行するためのオプションを提供する簡単なテキストが含まれています。 ただし、劇的に失敗する一部のアプリケーションの実行が許可されます。Apphelp は、これらのアプリケーションの実行を続行するオプションをユーザーに提供しません。
Appfix を使用すると、アプリケーションのコンポーネントによって呼び出される API のフックがインストールされます。 これらのフックは、システム関数 (シミングとも呼ばれます ) の代わりに呼び出すことができるスタブ関数をポイントします。 スタブ関数は、インストールされているバージョンの Windows でアプリケーションを実行可能にするために必要な操作を実行します。 各スタブ関数は、処理の完了後に必要に応じてシステム関数を呼び出す場合があります。 互換性レイヤーまたはモードには、1 つ以上の shim とフラグが含まれています。
このセクションの内容
- APPHELP_DATA
- ATTRINFO
- BaseFlushAppcompatCache
- FIND_INFO
- INDEXID
- PATH_TYPE
- SdbBeginWriteListTag
- SdbCloseDatabase
- SdbCloseDatabaseWrite
- SdbCommitIndexes
- SdbCreateDatabase
- SdbDeclareIndex
- SdbEndWriteListTag
- SdbFindFirstDWORDIndexedTag
- SdbFindFirstTag
- SdbFindNextTag
- SdbFormatAttribute
- SdbFreeFileAttributes
- SdbGetAppPatchDir
- SdbGetBinaryTagData
- SdbGetFileAttributes
- SdbGetFirstChild
- SdbGetIndex
- SdbGetMatchingExe
- SdbGetNextChild
- SdbGetStringTagPtr
- SdbGetTagFromTagID
- SdbInitDatabase
- SdbIsStandardDatabase
- SdbMakeIndexKeyFromString
- SdbOpenApphelpDetailsDatabase
- SdbOpenApphelpResourceFile
- SdbOpenDatabase
- SdbQueryDataExTagID
- SDBQUERYRESULT
- SdbReadApphelpDetailsData
- SdbReadBinaryTag
- SdbReadDWORDTag
- SdbReadQWORDTag
- SdbReadStringTag
- SdbRegisterDatabaseEx
- SdbReleaseDatabase
- SdbReleaseMatchingExe
- SdbStartIndexing
- SdbStopIndexing
- SdbTagRefToTagID
- SdbTagToString
- SdbUnregisterDatabase
- SdbWriteBinaryTag
- SdbWriteBinaryTagFromFile
- SdbWriteDWORDTag
- SdbWriteNULLTag
- SdbWriteQWORDTag
- SdbWriteStringTag
- SdbWriteWORDTag
- Shim Database Types
- ShimFlushCache
- TAG
- TAG Types
- TAGID
- TAGREF