應用程式相容性資料庫
相容性基礎結構會使用資料庫來識別應用程式相容性問題及其解決方案。 此資料庫是具有 .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 類型
- TAGID
- TAGREF