2

Homeworld 1 をプレイしてきましたが、これを実行するには、Windows NT 4 互換モードで実行する必要があります。

Windows 8 には何らかの理由でこれがなく、非常に面倒です。

Microsoft Application Compatibility Toolkit を使用して、Homeworld が Windows のバージョンを取得するために API 呼び出しを行っていることを発見しました。Windows NT で実行されていると認識していない限り、動作を停止しているようです (デバッガーを使用すると、GetVersion と GetVersionEx を呼び出していることがわかります)。 .

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

Microsoft Applocation Compat Toolkit で上記を使用すると、このエラーは修正されますが、私はこのゲームを多くの異なるコンピューターでプレイしますが、上記の方法を使用できないコンピューターもあります。

プログラムが NT で実行されていると認識できるように、API 呼び出しをインターセプトし、上記のリンク構造体でそれらを返す何らかのラッパーを作成する方法はありますか? フォルダーに配置した多くの DLL を見てきましたが、特定の呼び出しをインターセプトできますが、それらがどのように機能するかはわかりませんが、C、C++ で記述されていると思います。

私が実際に知っている唯一の言語は C# ですが、これは私がやりたいことができないと思います。誰かが私を正しい方向に向けることができれば、助けてください。これに関するヒントを教えてください。もっと助けてください。

御時間ありがとうございます!

4

1 に答える 1

1

API フック ライブラリを使用できます。有名な easyhook ライブラリのチュートリアルを次に示します。

アプリケーションの GetVersionEx API をフックし、必要なものを返します。

于 2013-03-04T10:43:40.907 に答える