概要
vb5.0で作成されたプログラムをWindows7 64Bit 環境で起動(ランタイム)させたい
調べた事
(1)起動するPCにて「プログラム互換ウィザード」の設定が必要
→これによりWindows7での動作が可能となる
(2)起動するPCにて勝手に「WOW64」がvb5.0のPGを32BitのPGと判断しエミュレートする
→これにより64bitでの動作が可能になる
質問内容
(1)そもそも上記(1)(2)の対応で動作するものなのか しない場合はこまごまとした制約事項
があるのであればどのような内容なのか
(2)上記(2)のwow64 という仕組みは vb5.0のPGを32bitとどのように判断しているのか
また判断させるためにしておかなければならない処理は存在するのか
となります。私の周りではみな「動かしてみて動けば動く」との意見ですが、
「動かしてみて」の部分が曖昧で全てのソースコードを通過するテストは難しく
事前に知りえる問題点を収集したく質問した次第です
No.2ベストアンサー
- 回答日時:
解釈が正しくないですね。
正確には、前提条件として「動かない」が、例外として「動く場合もある」というのが正しい解です。
マイクロソフトでは、Windows 7でのVB5.0アプリケーションについて一切の動作を保証していません。
また、VB6.0についても、APIは大方実装されていますが、動作の保証を行っていません。
即ち、VB5.0は動けばもうけもの。VB6.0は一応動く仕組みはあるが、動かない場合があっても、何らかの対処方法を説明することはないというスタンスです。ただし、VB6ベースのコードは、.最新のVBでコードのアップグレードを行なえば、ある程度は自動で最新コードへの最適化が可能です。(ここで最適化が行えない部分に、Windows7 64bit環境で実行に沿わないものが含まれます)
そのため、1に関しては、制約も何もなく、動かない前提で動かすべきということになります。
VB6ベースの場合は、動く前提ではあるが、特定のカーネルドライバを直接キックしたり、自ら設計した独自のAPIを利用する場合は、動作しません。尚、16bitベースのコードは64bitOSでは全面的に(全て)動作しません。
2について、Windows On Windows 64(Bit)は、VB6.0より後に提供されるWin32の共通参照関数群(DLL、OCX)のAPIを、64bitの代替APIに割り当てて実行できます。具体的に言えば、AというAPIがあったとしたら、そのAというAPIと同じ役割を持つ64bitAPIに処理を引き継がせ、処理を実行します。また、独自APIであってもハードウェアに依存しない程度で、ユーザーモードの範囲内で計算などを行うなら引継ぎなしに実行が可能です。
しかし、先に記載したように、Windows 64bitが保持しているライブラリに存在しない外部APIを利用している場合、既に64Bitでは廃止された16bitAPIを利用する場合、カーネルモードで直接ハードウェアをコールすような素行の悪いプログラムやライブラリ、脆弱性やパフォーマンスの問題などによって引継ぎが出来なかったAPIを利用する場合は全て動作対象外となります。
尚、これはVB5におけるルールではなく、VB6より後のバージョンにおける条件です。尚、例外に関するルールが明確に開示されているわけではないので、抽象的な回答であることはご了承ください。
ということです。
個人的な回答をすると、基本的にVB6以前のコードは、設計されたソースがあるなら、最新のVisual Studioにてコードをアップグレード(機械最適化)してみることをお奨めします。それで、適正ではないと判断された箇所については、手作業で最新VBベースソースに修正するのがベストです。
全体的にNGになる場合は、今後も踏まえ設計からやり直した方が良いと思われます。
No.4
- 回答日時:
>なので「とりあえず動かす」はなく、事前の見積確度が向上するような情報を頂ければ幸いです
Microsoftがそもそもその手の情報を公開していないので(VB5についてはサポート切れですしWindows7での動作保証もされてないので当然のこと)、それが必要であれば自ら調査していくしかないです。
なので本来は調査作業として工数を試算すべき対象かと思います。
どこかの企業なり個人でそれらを調査し公開されてるのなら、それを利用する手もあると思いますが少なくとも私は存じません(私が知らないだけという可能性は大いにありえます)
また仮に存在しても検証作業は必要かと思います。
質問内容の(2)についてですが、実行ファイルに32bit版などの各種情報が埋め込まれていますので、それで判断できます。
No.3
- 回答日時:
> 私の周りではみな「動かしてみて動けば動く」との意見です
はい、とりあえず動かしてみるのが先でしょう。
絶望的か、だいだい大丈夫か、とりあえず主な機能は動くといった認識を持つのが先でしょう。
選択肢としては、Windows7 XPモードも考えられます。
この回答への補足
ご回答感謝いたします。
この質問に至った経緯を追記させて頂きますので、お時間あればご一読いただきご回答いただけると幸いです。
私の立場:社内情報システム部社員
最終目的:今期に必要な開発予算を試算する
実作業者:社内SE及びPG
となり作業実施する前に大まかな工数を試算したくこの質問に至っております。
なので「とりあえず動かす」はなく、事前の見積確度が向上するような情報を頂ければ
幸いです
No.1
- 回答日時:
VB5自体が、とっくにマイクロソフトのサポートを終了していますので、「動かしたいのであれば、全て自己責任でどうぞ。
」という事です。この回答への補足
ご回答いただき有難うございます。
サポート終了の件、認識していますが「ランタイムの動作保証」はWindows8でも保証するとの情報があります。となると賛否両論ありますが、VB5のシステムを延命する選択肢を無視できずにおります。
どうせならWindows7で動かなくなってしまえば悩まずにすんだのですが・・・・
その上でご質問の件につきましてお知恵を拝借できないでしょうか
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでArrayListを使う為の「mscorlib.tlb」の参照設定について 3 2022/03/23 19:45
- デスクトップパソコン ん~…分からん 7 2022/06/10 10:47
- デスクトップパソコン 「自動修復でPCを修復できませんでした」と表示されPCが起動しないのですが対処法はありますか? 5 2022/05/13 09:16
- その他(パソコン・スマホ・電化製品) PCに詳しい方に、質問です。 使用しているのは、TOSHIBAのPCで、多分なんですけど、アップデー 4 2023/01/28 03:30
- Visual Basic(VBA) VBプロジェクトでのフォルダ構成について 1 2023/07/22 03:49
- Y!mobile(ワイモバイル) ワイモバで契約中のスマホを使用してます。 機種はoppo reno5aで、現在Spotifyや質問サ 4 2023/02/04 22:07
- その他(プログラミング・Web制作) Windows上のプログラム。「予め決められた時刻に自分で起動して処理して自分で終了する」って可能? 3 2023/01/04 14:29
- レトロゲーム 小学生の頃にやっていた未クリアのゲームをプレイしたい 3 2023/05/07 23:37
- デスクトップパソコン ゲーミングPCが起動しない場合のアドバイスをいただきたいです。 こんにちは。 本日、私の使用していた 4 2023/07/11 12:49
- 日本語 [ 5-イ. 先生に本をもらった ] 11 2022/10/28 18:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Visual Studio 「AnyCpu」について
-
Format 関数のバグ?
-
「読み込み違反」が起きたとき...
-
VB6.0 exe作成時に実行時エラー...
-
VBで「ファイル名を指定して実...
-
excel vbaから実行するexe実行...
-
Windows PowerShellでC言語を実...
-
Eclipse CDT MinGWによるC言語
-
JP1から起動したexeでhttpリク...
-
(msvcr71d.dll) でハンドルされ...
-
VB6 EXEとプログラムの違い
-
system関数(Windows)の戻り値!!
-
実行ファイル(.exe)が別のPC...
-
C#VB、exeに埋め込んだexeの実行
-
VBコンソールアプリケーション...
-
C++初心者です。 debug asserti...
-
ActiveDirectoryから値を取得
-
shell関数には二重引用符を渡せ...
-
vba 時間の引き算 例えば 15:00...
-
Designer.vbは直接コードをいじ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Visual Studio 「AnyCpu」について
-
excel vbaから実行するexe実行...
-
「読み込み違反」が起きたとき...
-
Windows PowerShellでC言語を実...
-
C++初心者です。 debug asserti...
-
Pythonのコードをexe化
-
実行ファイル(.exe)が別のPC...
-
VB6.0 exe作成時に実行時エラー...
-
C#VB、exeに埋め込んだexeの実行
-
外部exe呼び出しの方法 ShellEx...
-
VisualStudioでC#が実行できない
-
ActiveX → VB を起動するとCre...
-
androidで.exeを実行できますか?
-
ActiveDirectoryから値を取得
-
Format 関数のバグ?
-
system関数(Windows)の戻り値!!
-
C言語に詳しい人に質問です。
-
VS2008 の C++ で作成したEXEの...
-
ACCESSランタイムでエラー
-
WindowsXpでAppActivate
おすすめ情報