2013-03-04 56 views
1

我一直在玩Homeworld 1,爲了運行它,您需要運行Windows NT 4兼容模式。攔截與獲取Windows Verion相關的API調用

Windows 8沒有這個出於某種原因,這是很煩人的。

使用Microsoft應用程序兼容性工具包我發現Homeworld執行API調用來獲取Windows版本,它似乎停止工作,除非它認爲它在Windows NT上運行(使用調試器我可以看到它要求GetVersion和GetVersionEx)。

http://technet.microsoft.com/en-us/library/cc749574(v=ws.10).aspx

使用上述與微軟Applocation COMPAT工具包修正了這個錯誤,但我玩這個遊戲有很多不同的計算機,其中一些不能用上述方法。

有沒有什麼辦法讓我做一些封裝,攔截API調用並返回它們與上述鏈接結構,以便該程序認爲它在NT上運行?我見過很多DLL放在一個文件夾中,它可以攔截某些調用,但我不確定它們是如何工作的,我假定它們是用C,C++編寫的。

我真正知道的唯一一種語言是C#,我認爲它不能做我想做的事,所以如果任何人能夠指出我正確的方向,幫助,給我提示或指向我在那裏我可以得到更多的幫助,這會很棒!

謝謝你的時間!

回答

1

你可以使用API​​掛鉤庫,這裏是一個tutorial爲着名的easyhook庫。

爲您的應用程序鉤住GetVersionEx api並返回你想要的。