2

我一直在玩 Homeworld 1,要运行它,您需要在 Windows NT 4 兼容模式下运行它。

Windows 8 出于某种原因没有此功能,这很烦人。

使用 Microsoft Application Compatibility Toolkit 我发现 Homeworld 执行 API 调用来获取 Windows 版本,并且它似乎停止工作,除非它认为它在 Windows NT 上运行(使用调试器我可以看到它调用 GetVersion 和 GetVersionEx) .

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

将上述内容与 Microsoft Applocation Compat Toolkit 一起使用可修复此错误,但我在很多不同的计算机上玩此游戏,有些计算机无法使用上述方法。

我有什么办法可以制作某种包装器来拦截 API 调用并使用上述链接结构返回它们,以便程序认为它在 NT 上运行?我见过很多你放在一个文件夹中的 DLL,它可以拦截某些调用,虽然我不确定它们是如何工作的,我假设它们是用 C、C++ 编写的。

我真正了解的唯一语言是 C#,我认为它不能做我想做的事,所以如果有人能指出我正确的方向,请帮助,给我提示或指出我可以得到的地方更多的帮助会很棒!

谢谢你的时间!

4

1 回答 1

1

您可以使用 api hooking 库,这里是著名的 easyhook 库的教程

为您的应用程序挂钩 GetVersionEx api 并返回您想要的内容。

于 2013-03-04T10:43:40.907 回答