应用程序兼容性数据库
兼容性基础结构使用数据库来识别应用程序兼容性问题及其解决方案。 此数据库是具有 .sdb 扩展名的索引二进制文件。 兼容性基础结构提供一个编程接口来访问数据库。
可以在运行时逐个应用程序解决兼容性问题。 数据库中指定的每个应用程序都包含一个或多个需要解决方案的组件。 组件是一般使用其文件属性(例如,校验和)描述的可执行文件。
数据库查找和确定每个应用程序的解决方案的过程称为匹配。 文件属性以及包含 .exe 文件的文件夹或子文件夹中的关联文件的存在可用于创建唯一匹配项。 关联的文件称为匹配文件。
TAG 是数据库中条目和属性的唯一标识符。 TAG 类型指示与 TAG 关联的数据的格式。 例如,TAG_NAME 的类型为 TAG_TYPE_STRINGREF;TAG_NAME 的数据是名称字符串。 TAGID 是指向特定数据库中的条目的指针。 TAGREF 是指向可跨多个数据库使用的条目的指针。
文件属性是与磁盘上的文件关联的元数据。 这些属性包括文件名、文件大小、校验和、版本和日期。 这些属性用于确定系统加载的文件是否与数据库条目匹配。 因此,这些文件属性也称为匹配属性。
解决方案
应用于应用程序的组件的最常用解决方案是 Apphelp 和 Appfix。
使用 Apphelp 时,通常会显示自定义本地化消息通知,通常在安装或启动应用程序时显示。 它包含说明兼容性问题的简短文本,并提供继续运行应用程序的选项。 但是,某些应用程序会大幅失败,从而无法运行;Apphelp 不会向用户提供继续运行这些应用程序的选项。
使用 Appfix 时,将为应用程序组件调用的 API 安装挂钩。 这些挂钩指向可以调用的存根函数,而不是系统函数(也称为填充)。 存根函数执行使应用程序能够在已安装的 Windows 版本上运行所需的操作。 每个存根函数都可以选择在完成其工作后调用系统函数。 兼容性层或模式包含一个或多个填充码和标志。
本节内容
- 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
- 填充码数据库类型
- ShimFlushCache
- TAG
- TAG 类型
- TAGID
- TAGREF