讓.NET 8 支持 Windows Vista RTM

衆所周知,從 Windows 的每次更新又會新增大量 API,這使得兼容不同版本的 Windows 需要花費很大精力。導致現在大量開源項目已經不再兼容一些早期的 Windows 版本,比如 .NET 8 AOT編譯命令行程序時生成的EXE,依賴以下三個函數,經查只有Windows 7 SP1以上系統才包含,具體參見:讓.NET 8 支持 Windows Vista RTM · Issue #66 · Chuyu-Team/YY-Thunks (github.com)

YY-Thunks(https://github.com/Chuyu-Team/YY-Thunks)是一個採用MIT許可證的開源項目,旨在解決Windows XP RTM版本無法定位程序輸入點的問題,例如DecodePointer、EncodePointer、RegDeleteKeyEx等。這個項目通過使用LoadLibraryGetProcAddress動態加載API,並在API不存在時提供補償措施,模擬原始API的行爲,從而讓程序能在舊版本的Windows上正常運行。YY-Thunks的特點包括快速、安全,支持多種編譯器和運行庫模式。可以通過NuGet包管理器或手工配置的方式集成到項目中。

YY-Thunks最新發布的v1.0.10-Beta3 包含了對.NET 8 的Native AOT的支持。

image

YY-Thunks 通過動態加載和模擬這些函數的行爲,使得在舊版 Windows 上運行的程序能夠調用這些函數,即使它們的系統庫中沒有直接提供這些函數。這樣,開發者可以繼續使用現代編程實踐和 API,同時保持對舊操作系統的兼容性。

爲了確保您的項目兼容性,您應該查看 YY-Thunks 的官方文檔或源代碼,以獲取最新的支持列表和集成指南。由於 API 支持可能會隨着 YY-Thunks 的更新而變化,直接查看項目的最新信息是最準確的做法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章