2013-03-04 55 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并返回你想要的。