アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

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

A 回答 (4件)

解釈が正しくないですね。


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

>なので「とりあえず動かす」はなく、事前の見積確度が向上するような情報を頂ければ幸いです



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

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

> 私の周りではみな「動かしてみて動けば動く」との意見です



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

選択肢としては、Windows7 XPモードも考えられます。 

この回答への補足

ご回答感謝いたします。

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

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

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

なので「とりあえず動かす」はなく、事前の見積確度が向上するような情報を頂ければ
幸いです

補足日時:2012/10/23 14:25
    • good
    • 0

VB5自体が、とっくにマイクロソフトのサポートを終了していますので、「動かしたいのであれば、全て自己責任でどうぞ。

」という事です。

この回答への補足

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

その上でご質問の件につきましてお知恵を拝借できないでしょうか

補足日時:2012/10/23 13:15
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!