(7) VB5:予期しないエラーが発生しました
旧々猿頁から収録。 日付を管理していなかったので、正確な記述日時がわかりません。 ので、サイト「猿頁」開設日としました。御了承ください。
Q. ある日突然、「予期しないエラーが発生しました」と表示されて、VB5が起動できなくなってしまった。
A. recents.exeを入手しよう。
この情報および解決に必要なモジュールは、 日本マイクロソフトのHPから提供されています。 仕事だろうと趣味だろうと、開発作業を行うならその開発環境(OS、言語、ツール)提供元のHPは 真っ先に&常にチェックすべきです。
VB5は、全角文字を含んだフォルダ・ファイル名に弱いというバグ を持っています。
起動できなくなってしまったマシンの環境を、起動できるように修正するツール「recents.exe」が、 日本マイクロソフトのHPから提供されています。
VB5は起動時に、最近使ったプロジェクトのフォルダ(メニューバーの[ファイル(F)]の下の方に 表示される奴)をチェックしに行くようで、この時に対象フォルダ・プロジェクト名に特定の文字コードを持つ 全角文字が含まれていると、上記の現象が発生します。
これを回避するには、最近使ったプロジェクトのフォルダを忘れさせてやればいいわけですね。
この記録は、レジストリの「HKEY_CURRENT_USER\Software\Microsoft\Visual Basic\5.0\RecentFiles」以下に ありますので、レジストリエディタを使ってここのキーをごっそり削除してやれば、再びVB5が起動するようになります。
(実際、私はマイクロソフトがこのバグを公表して対応策を取るまでは、この方法で回避していました。 めんどくさかったぁ!)
さて、「マイクロソフトがこの対応を取るのなら、起動時に以前開いたプロジェクトをチェックしないようなパッチを 提供してくれないかなぁ」と思っていたのですが、現実はそうではありませんでした。
日本マイクロソフトは、上記のレジストリキー削除動作を自動的に行うプログラム「recents.exe」を提供して、 対応策としたのです。 こんなもんなら私にでも作れます。ちょっと拍子抜けしました。
しかし、VB5のIDE(開発環境)は改造できない(技術的にもどこをどういじればいいかわかりませんし、 使用許諾契約としても改造は禁止されています)わけですから、この対応策を採用するしかありません。
というわけで、recents.exeのショートカットをメニューなりデスクトップなりに登録して、 いざというときにクリック一発で実行できるようにしておきましょう。
私はIE4環境なので、タスクバーのVB5ツールバー(メニューフォルダをそのまま登録してあります)のVB5アイコンの すぐ横に登録してあります。
この日本マイクロソフトの対応策について、「その場しのぎだ」と怒る方もいるようです。
確かに私も「その場しのぎの対応だなぁ」とは思いますが、怒る気はしません。
どぅも日本マイクロソフトは米国Microsoftと別の行動をとってはいけないのではないか?という気がしています。
今回の件の根っこを考えていくと、結局あちこちで窮屈な思いをしている「UniCodeの限界と障害」に 行き着きます。つまりUniCode規格そのものの日本語へのもっときちんとした対応、および米国Microsoftの UniCodeへのもっときちんとした対応が行われない限り根本的な解決にはならないわけですね。 これは日本マイクロソフトだけがガンバってどうにかなる問題ではありません。
では上記「起動時に以前開いたプロジェクトをチェックしないようなパッチ」を提供すればいいではないか? …たぶん、これはVBの仕様変更になってしまうのだと思います。で、きっと、日本語版ローカルな仕様の変更は 米国Microsoft→日本マイクロソフト間で許可されていないのではないでしょうか?
VBに限らずマイクロソフト製品のSPが全世界共通で提供されている(逆に言えば、全世界共通のバグしかフィックス されない)現状を考えると、あながち的外れではない推測ではないかと思っているのですが。 MSDN Libraryだって日本語版Visual Studioで不具合が起こったとき、Visual Studioを修正するのではなく 「日本語Visual Studio対応版MSDN Library」が提供されることになっちゃいましたし。