-PR-
  • 困ってます
  • 質問No.7762201
解決
済み

Windows64BitOSでVB5.0のPG起動

  • 閲覧数3563
  • ありがとう数0
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 20% (1/5)

概要
 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とどのように判断しているのか
   また判断させるためにしておかなければならない処理は存在するのか

となります。私の周りではみな「動かしてみて動けば動く」との意見ですが、
「動かしてみて」の部分が曖昧で全てのソースコードを通過するテストは難しく
事前に知りえる問題点を収集したく質問した次第です
  • 回答数4
  • 気になる数0

質問者が選んだベストアンサー

  • 回答No.2
レベル14

ベストアンサー率 62% (6243/9958)

解釈が正しくないですね。
正確には、前提条件として「動かない」が、例外として「動く場合もある」というのが正しい解です。
マイクロソフトでは、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になる場合は、今後も踏まえ設計からやり直した方が良いと思われます。
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.4
レベル14

ベストアンサー率 29% (1069/3660)

>なので「とりあえず動かす」はなく、事前の見積確度が向上するような情報を頂ければ幸いです Microsoftがそもそもその手の情報を公開していないので(VB5についてはサポート切れですしWindows7での動作保証もされてないので当然のこと)、それが必要であれば自ら調査していくしかないです。 なので本来は調査作業として工数を試算すべき対象かと思います。 どこかの企業なり個人でそれらを調査し公開されてるの ...続きを読む
>なので「とりあえず動かす」はなく、事前の見積確度が向上するような情報を頂ければ幸いです

Microsoftがそもそもその手の情報を公開していないので(VB5についてはサポート切れですしWindows7での動作保証もされてないので当然のこと)、それが必要であれば自ら調査していくしかないです。
なので本来は調査作業として工数を試算すべき対象かと思います。
どこかの企業なり個人でそれらを調査し公開されてるのなら、それを利用する手もあると思いますが少なくとも私は存じません(私が知らないだけという可能性は大いにありえます)
また仮に存在しても検証作業は必要かと思います。

質問内容の(2)についてですが、実行ファイルに32bit版などの各種情報が埋め込まれていますので、それで判断できます。
  • 回答No.1
レベル12

ベストアンサー率 40% (175/429)

VB5自体が、とっくにマイクロソフトのサポートを終了していますので、「動かしたいのであれば、全て自己責任でどうぞ。」という事です。 ...続きを読む
VB5自体が、とっくにマイクロソフトのサポートを終了していますので、「動かしたいのであれば、全て自己責任でどうぞ。」という事です。
補足コメント
okinawa_bussan

お礼率 20% (1/5)

ご回答いただき有難うございます。
サポート終了の件、認識していますが「ランタイムの動作保証」はWindows8でも保証するとの情報があります。となると賛否両論ありますが、VB5のシステムを延命する選択肢を無視できずにおります。
どうせならWindows7で動かなくなってしまえば悩まずにすんだのですが・・・・

その上でご質問の件につきましてお知恵を拝借できないでしょうか
投稿日時 - 2012-10-23 13:15:30
  • 回答No.3
レベル13

ベストアンサー率 59% (729/1235)

> 私の周りではみな「動かしてみて動けば動く」との意見です はい、とりあえず動かしてみるのが先でしょう。 絶望的か、だいだい大丈夫か、とりあえず主な機能は動くといった認識を持つのが先でしょう。 選択肢としては、Windows7 XPモードも考えられます。  ...続きを読む
> 私の周りではみな「動かしてみて動けば動く」との意見です

はい、とりあえず動かしてみるのが先でしょう。
絶望的か、だいだい大丈夫か、とりあえず主な機能は動くといった認識を持つのが先でしょう。

選択肢としては、Windows7 XPモードも考えられます。 
補足コメント
okinawa_bussan

お礼率 20% (1/5)

ご回答感謝いたします。

この質問に至った経緯を追記させて頂きますので、お時間あればご一読いただきご回答いただけると幸いです。

私の立場:社内情報システム部社員
最終目的:今期に必要な開発予算を試算する
実作業者:社内SE及びPG

となり作業実施する前に大まかな工数を試算したくこの質問に至っております。

なので「とりあえず動かす」はなく、事前の見積確度が向上するような情報を頂ければ
幸いです
投稿日時 - 2012-10-23 14:25:32
  • 回答数4
  • 気になる数0
このQ&Aで解決しましたか?

関連するQ&A

-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ