我一直在玩 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#,我认为它不能做我想做的事,所以如果有人能给我指出正确的方向,请帮忙,给我提示或指出我在哪里如果我能得到更多帮助那就太好了!
感谢您的宝贵时间!
最佳答案
您可以使用 api Hook 库,这里是 tutorial对于著名的 easyhook 库。
为您的应用程序挂接 GetVersionEx api 并返回您想要的内容。
关于c# - 拦截与获取Windows版本相关的API调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15198268/