その他

28年後、何千ものアプリケーションがWindows 95に移植される - .NET Frameworkの移植により、最新のソフトウェアの下位互換性が実現

投稿日:

レゴアイランドとカスタムSnipping Toolは、テストされたアプリの一つである。

YouTuberのMattKCは、彼自身の言葉を借りれば、Windows 98の最も顕著な機能である.NET Frameworkを古い95に移植するのに苦労して、「何千ものアプリ」をWindows 95に移植した。

結局のところ、98と比べたウィンドウズ95の主な制限は、.NET Frameworkがないことだ。

他のほとんどの点で、ウィンドウズ98はデザインも機能も驚くほど先代に近い。

しかし、なぜ彼はこんなことをしたのだろうか?

われわれが何度か繰り返し見た51分のビデオには、Windows 95のリリースから28年後に、その拡張についての動画を作ろうとしたのなら想像できるように、その時代のハードウェアとソフトウェアに対する純粋な熱意が表れている。

以下に埋め込んだオリジナルのビデオには、トーンとキャラクターを設定するいくつかの愉快な実写の余談もあり、美しく撮影されたいくつかの休憩時間も含まれている。

呪いのKernelExはWindows 95では動作しない。

MattKCは.NET Frameworkを正しく動作させる方法を見つけなければならない。

欠落している.DLLファイルは山ほどあるが、ダンプツールを使えば欠落しているファイル名を特定できるので、欠落しているDLLを代用するか無視することができる。

欠落しているDLLファイルをすべて移植しても、.NETはまだ動作しない。

.NETがWindows 95で動作するためには、51分53秒のオリジナル・ビデオの秒数よりも多くのレジストリ・キーが必要で、必要なレジストリ・キーの総数は5,409個だった。

しかし、いったん移植されても、.NETはWindows 95上で正しくJIT(Just In Time)デバッグできない。

原因は「ndphlpr」にあるようで、Windows 98では使われていない謎のレガシーWindowsドライバだが、.NETではこれがないとクラッシュするので「必須」なのだ。

MattKCは、ndphlprがあるとPCに嘘をつけばうまくいくかもしれないと判断したが、調査した結果、それが何なのか誰も知らないことがわかったので、完全に修正しようとした。

これはマシンコード例外エラーを吐き出す。

WinDebugツールは.NETをネイティブにサポートしていないため(まだ存在しないことになっているため)、MattKCはWindows 95と98を並行してテストしながら、いくつかの互換性の問題に対処しなければならない。

W95とW98は問題を見つけるために何日もWinDebugで実行され、進捗をリセットするのは骨の折れる作業だった。

最終的にMattKCは、WinDebugが読み取れないコードのブロックを発見した。解読されると、コードは次のように明らかになった:

F2 0F 10 44 24 08 F2 05 2C CO

このバグのあるコードは、いくつかのクリック関数のWindows APIが見つからないことに関連していた。

例外は、"user32.dllのNotifyWinEvent "が見つからず、SSE2がコード内の命令を難読化したことだった。

その後、.NETにパッチを当ててSSE2への依存を取り除かなければならなかったが、これは互換性を修正するものではなく、.NETデバッガそのものを修正するものだった。

Lego Islandのためにデバッグを重ねた結果、MattKCは最終的に、Exception/エラーメッセージを自分の見えない場所で発生させるのではなく、ウィンドウにプリントするメソッドを手動でコード化した。

これでうまくいき、DLLの互換性の最後の仕上げができた。

これに続いて、レゴアイランド用のRebuilderと、よりモダンになったカスタムスクリーンショット機能アプリがWindows 95で問題なく動くようになった。

れで、伝説の技術者 "Sufficiently-Determined Madman "(断固たる決意を持つ狂人)がまた一人増えたことになる。

ソース:Tom's Hardware - Thousands of apps ported back to Windows 95 twenty-eight years later — .NET Framework port enables backward compatibility for modern software

 

 

 

解説:

Windows95に28年の時を超えて.NETを実装した猛者が登場

実はわたくし、この話を聞くまで.NETの実装がWinodws98からとは知りませんでした。(苦笑

わたくしならWindows98で動くなら、そこまで満足してしまうと思います。

Windows95にはあまり良い思い出がありませんでしたし、9xで一番長く使ったのはWindows98SEだったからです。

ちなみにWindows MEは一時期使いましたが、すぐに98SEに戻りました。(苦笑。

理由はレトロOSファンには理解してもらえると思います。

この種のこだわりはわたくしのようなオールドPCerにも理解しがたいものです。

ROCmも割と簡単にわたくしはWindowsで動かないならLinuxを使えばいいじゃないという発言をしますが、昔のOSを使っていると不便なのは割と普通だからなのかもしれません。

ちなみにWindows9Xの最大メモリ量は512MBでした。

それ以上は正常に認識しませんので搭載することに意味はないです。

512MBというと今から考えるとかなり容量が小さいですが、そういう時代だったということです。

最後にこの一見無意味に見える作業を行った方に「断固たる決意を持つ狂人」という称号が与えられていますが、まさにその通りだと思います。

伊達と酔狂を地で行く話です。

 

-その他
-

Copyright© 自作ユーザーが解説するゲーミングPCガイド , 2024 All Rights Reserved.