Windows64BitOSでVB5.0のPG起動

このQ&Aのポイント
  • Windows7 64Bit環境でVB5.0で作成されたプログラムを起動するための対応方法とは?動作の制約事項も確認しましょう。
  • Windows7 64Bit環境で動作させるためには、プログラム互換ウィザードの設定が必要です。また、64ビットでの動作を可能にするためには、WOW64という仕組みが使用されます。
  • VB5.0のプログラムをWindows7の64ビット環境で動作させるための対応方法と、WOW64という仕組みについて詳しく解説します。
回答を見る
  • ベストアンサー

Windows64BitOSでVB5.0のPG起動

概要  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とどのように判断しているのか    また判断させるためにしておかなければならない処理は存在するのか となります。私の周りではみな「動かしてみて動けば動く」との意見ですが、 「動かしてみて」の部分が曖昧で全てのソースコードを通過するテストは難しく 事前に知りえる問題点を収集したく質問した次第です

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

  • ベストアンサー
  • parts
  • ベストアンサー率62% (6364/10149)
回答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になる場合は、今後も踏まえ設計からやり直した方が良いと思われます。

その他の回答 (3)

  • wormhole
  • ベストアンサー率28% (1621/5657)
回答No.4

>なので「とりあえず動かす」はなく、事前の見積確度が向上するような情報を頂ければ幸いです Microsoftがそもそもその手の情報を公開していないので(VB5についてはサポート切れですしWindows7での動作保証もされてないので当然のこと)、それが必要であれば自ら調査していくしかないです。 なので本来は調査作業として工数を試算すべき対象かと思います。 どこかの企業なり個人でそれらを調査し公開されてるのなら、それを利用する手もあると思いますが少なくとも私は存じません(私が知らないだけという可能性は大いにありえます) また仮に存在しても検証作業は必要かと思います。 質問内容の(2)についてですが、実行ファイルに32bit版などの各種情報が埋め込まれていますので、それで判断できます。

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.3

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

okinawa_bussan
質問者

補足

ご回答感謝いたします。 この質問に至った経緯を追記させて頂きますので、お時間あればご一読いただきご回答いただけると幸いです。 私の立場:社内情報システム部社員 最終目的:今期に必要な開発予算を試算する 実作業者:社内SE及びPG となり作業実施する前に大まかな工数を試算したくこの質問に至っております。 なので「とりあえず動かす」はなく、事前の見積確度が向上するような情報を頂ければ 幸いです

回答No.1

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

okinawa_bussan
質問者

補足

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

関連するQ&A

  • Windows7、64bitのVB6ランタイム

    Access2003で作成したファイルをWindows7、32bitのAccess2013で使用しています。 VB6が動かないという話だったので、VB6RTEST Ver.3.40というVB6ランタイムをインストールして動かしています。 この度、Windows7の64bitにAccess2013を入れて、上記のファイルを動かそうとしたら、VB6RTEST Ver.3.40をインストールした後も、VBエラーが出てしまいました。 この場合の対処方法を知っていたら教えてください。 よろしくお願いします。

  • VB4.0にて作成したソフトの配布

    VB4.0(32ビット版)にてソフトを開発しました。 フリーソフトとして配布しようと思います。 インストーラ(EXEとReadMeとKernel32.DLL,Version.DLL)を作成し、知人のPC(Win2000)にインストールしようと したら「VB40032.DLLが見つかりませんでした。」と表示され、インストーラも起動できなかったそうです。 VB6.0のランタイムを入れてもだめだったそうです。 やはり、VB4.0(32ビット版)のランタイムが必要なのでしょうか?ご教授願います。

  • VB作成のEXEファイルの起動時に

    私の記憶ですとVBで作られたEXEファイルを作成したPC以外で起動する場合「ランタイムファイル」なる物が必要だと思ったのですがVB6.0で作成したEXEファイルを別のPCにて問題なく起動したのですが、もしかしてVB6.0からは「ランタイムファイル」が必要無くなったのでしょうか?

  • VB2.0とVB6.0の共存は可能?

    VBで作成したプログラムについて質問があります。 Windows95上で起動するプログラムをVB6.0で作成したのですが、 インストール対象のパソコンにはVB2.0で作成されたプログラムが 既にインストールされています。 この場合、VB6.0で作成したプログラムをインストールしても 問題はないのでしょうか? 以前DLLの上書きとかで問題が生じるととか聞いたことがあるので不安になっています。 ちなみにインストールするのはプログラムとランタイムのみで、 開発ツールはインストールするつもりはありません。 よろしくお願いします。

  • (Windows7)VB6でODBC接続エラー

    動作環境 OS:Windows7(64bit) DB:SQL2008 Express(SP1) VB6ランタイム適用済 お世話になります。 自作のVB6EXEをWindows7で実行したところ、下記のエラーが発生してしまいます。 ErrNo:-2147168242 メッセージ:アクティブなトランザクションがありません。 ソース上のどこで発生しているのか調べたところDBのCommit時に発生 していました。 ソース:  BeginTrans  Insert文  CommitTrans  ←ここでエラー エラーにはなるのですが、Insert文の内容はDBに反映されます。 また、BeginTrans、CommitTransを使用せず、Update、Insertのみを実行した 場合はエラーは発生しません。(DBにも値が登録されます) 現状、RollbackTransができない状態です。 以下は試してみたがダメだった内容です。  ・XPやVistaでは正常に動作していたので、互換モードをVistaに設定して実行  ・Windows7(32bit)で実行 調べていて、ODBCはデフォルトで自動コミットするという記載を見かけたのですが、 DB接続時に何かしらプロパティの設定が必要なのでしょうか? 上記エラーの回避策をご存知の方がいらっしゃいましたら、ご教授願います。

  • VB6 SP4のラインタイムを探しています。

    現在VB6にSP4をあててプログラムの開発をしています。 実際に動作させるマシンにはVB6をいれることはできないのでVB6 SP4のランタイムを探しています。 きっと、microsoftのHPのどこかにあると思いますが なかなかみつかりません。 どなたかご存知の方がいらっしゃいましたら URLを教えていただけませんか? よろしくお願いします。

  • 64bitCPUに32bitOSを入れたときの動作やデメリット

    質問内容: 64bitCPUに32bitOSを入れた場合、 ・動作は32bitCPUに32bitOSを入れた場合より悪化するか(具体例もあると嬉しいです) ・32bit板のソフトが正常に動作する保障はどのくらいあるか ・上記以外で、デメリットはあるか を教えていただけますでしょうか? 大雑把な質問で申し訳ないですが、よろしくお願いします。 状況: 64bitCPUを買うことを決めています。 頻繁ではないですが、32bitでは足りない計算をするためです。 (ハードな計算をしていますが、PCに関してはド素人です…) OSに関しては、64bitのメリットを必要としていません。 しかし、32bitOSを入れた場合、どのようなデメリットが生じるのか、心配です。 64bitOSを入れるより無駄が多い(64bitCPUをフルに生かせない)ことは存じております。 OSは、Windows Vistaを入れようと思っています。 64bitPCをメインに使う予定ですが、別に32bitPCもあるので、64bitPCの使用目的は柔軟に変えられます。 いくつか64bitと32bitに関する過去の質問を読みましたが、明快な理解を得ることができなかったので、質問させていただきます。 よろしくお願いいたします。

  • VB4のランタイムを再配布したいのですが、許諾に詳しい方、教えて下さい。 

    VB4でプログラムを作りました。フリーソフトとして登録したいのですが、ダウンロードした人にVB4のランタイムがないと動かないようです、(自分のPCのVB4の環境を削除して試したら、ランタイムVB40032.DLLが無いのメッセージが出ました)、そこでプログラムとランタイムを一緒にダウンロード出来るようにしたら、使用許諾なんたら・・・に問題があるのでしょうか?あるとしたら対策はありませんか?どうも法律的な問題は頭が痛くなります。頭が痛くならない方、教えて下さい。

  • ホストOS:Windows XP(32bit)

    ホストOS:Windows XP(32bit) VMware player:ver 3.0.0 ゲストOS:Windows XP(32bit)×n という構成で、1台のPCを使用しています。 ゲストOSの数を増やしたいのですが、ホストOSのWindows XP(32bit)の制約上 3~4GBまでしかメモリを搭載できません。マザーボード的には、メモリを 更に増やせるので、ホストOSを64bitにしようと思います。 ホストOS:Windows 7(64bit) VMware player:ver 3.0.0 という構成にしても、上記の既存環境で動作していた、 ゲストOS:Windows XP(32bit)×n は動作するでしょうか? ご存知の方、教えてください。

  • WinDVD 2010 Pro(Windows7)

    Windows7 Ultimate 64bit版のPCにWinDVD 2010 Proをインストールしました。問題なくインストール出来たのですが、アイコンから起動すると 「Windowsで利用出来ない配色が選択されました。Aeroを切ります」というメッセージがでて、Aeroが無効になります(Windowのタスバーも非透過になってしまう) これだけなら問題ないのですが、Aeroが切れると同時に「応答なし」になってしまい、なにも操作ができない状況となります。 64bit Nativeには未対応のソフトですが、互換モード(WOW)で動作すると明記されています。どこに問題があるのでしょうか?

専門家に質問してみよう