2011-07-08 17 views
3

私はサードパーティ製のWindows .dllファイルを持っていますが、これはサポートを中止しており、問題を解決するためのCソースコードはありません。.dllはWindows XPおよびVistaでは正常に動作しますが、7では正しく動作しません。

私のプロジェクトで.dllを使用しています。

.dllファイルは、Windows XP/Vista(これらのOSバージョンが最新/最新の時点でリリースされていたため)で完全に正常に動作します。現在、プロジェクトは現在Windows XP/Vistaに限定されています(その.dllのため) - Windows 7で動作すると、それはわずかに誤動作する(つまり、Windows XP/Vistaとは異なる結果が生じる)。

Microsoftは、互換性を実現する何か(Windowsライブラリなどの中で)を変更したに違いないと私は思っています。

私はそれが実際には最良の選択肢ではないことを知っていますが、一時的な/一時的な回避策として、私はWindows XP/Vistaの機能をエミュレートすることができます。 example =>http://www.busybox.net/about.html(これは、Linuxの機能をWindows上で実行できるようにする)です。

すべての提案/回避策をお読みください。

+0

いくつかのWindows 7には完全なXPがあり、何らかの種類の透明なコンテナでレガシープログラムを実行できます。私はあなたがEXEを右クリックし、いくつかのウィザードを通過すると思う。 –

+1

互換性の問題は何ですか?つまり、それが「わずかに機能しない」と「異なる結果を生み出す」と言ったとき、正確にはそれらの違いは何ですか?私はOSの互換性の違いを知っている人々がいるので尋ねる。 – selbie

答えて

1

Windows 7では、互換モードで実行可能ファイルを実行し、Windows XPと互換性のあるモードで実行するように設定できます。詳細は、Make older programs run in this version of Windowsを参照してください。 、あなたは常に互換モードを使用するには、この.DLLを強制することはできませんが、これを行うユーザまたはマシンのための適切なレジストリ設定を作るためにあなたのインストーラを変更することができます


注意。

レジストリキーを次のように追加するだけです。以下の下:これは常に互換モードで実行するようにプログラムを引き起こします

"Path\To\Program\YourExecutable.exe"=WINXPSP2 

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Application Compatibility\Layers 

のようにキーを追加します。現在のユーザーだけに設定したい場合は、HKCUで設定することもできます。

+0

ありがとうございます。特定の.dllに対してこれらの変更を行うための一般的な/自動化された方法ですが、 - 私はいくつかのステップを経るのではなく、エンドユーザが使用するためにできるだけ簡単にしたいと思います。 – newbtophp

+0

@newbtophp:.DLLに設定することはできませんが、exeファイルに設定することはできます。私は私の答えを編集します... –

+0

有益な編集ありがとう、unfourtanetlyコアは.dllの中にあるので、これは私の問題を解決しません互換モードは、.exe拡張機能を受け入れる。 – newbtophp

1

あまりにも簡単に聞こえますが、Windows互換モードはどうですか?多分それは動作します。

1

Windows 7でWindows XP Compatibility modeの下でアプリケーションを実行し、その結果をネイティブWindows XPのものと比較することができます。

関連する問題