C/C++/MFCのランタイムの種類を知りたい

解決


ぴょぴょ  2009-02-10 00:59:37  No: 69657  IP: 192.*.*.*

お世話になります。
只今、C/C++/MFCのランタイム・ライブラリの有無チェッカをVCで作ろうとしています。
僕はdllには詳しくないためランタイムの種類が分かりません。
dllのファイル名や場所(システムフォルダで良いのか?)などを
教えて下さい。

また、バージョンの取得方法も一緒に教えて欲しいです。
フリーソフトの『XPの救急箱』と同じようなものと作ろうとしています。
dllの種類がどのくらいあるのか知りたいです。

開発環境:Windows XP Home SP3
動作環境:Windows一般で動けるようにしたいです

編集 削除
ぴょぴょ  2009-02-10 01:02:31  No: 69658  IP: 192.*.*.*

この質問は他にも質問しています。
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200902/09020016.txt
http://madia.world.coocan.jp/cgi-bin/DelphiBBS/wwwlng.cgi?print+200902/09020011.txt
http://madia.world.coocan.jp/cgi-bin/Vcbbs/wwwlng.cgi?print+200902/09020017.txt
いろいろと知っているマルチな方が居りましたら
別の質問もお願いします。

編集 削除
みい  2009-02-10 10:41:31  No: 69659  IP: 192.*.*.*

まずはVCのヘルプのキーワードに「再頒布」を入力してみてください。
VCのバージョンによってDLLは異なります。

> 動作環境:Windows一般で動けるようにしたいです
ライブラリリンクで作ればDLLなくても動きます(基本コントロールのみなら)。

編集 削除
επιστημη  URL  2009-02-10 11:57:11  No: 69660  IP: 192.*.*.*

DLLの有無を知るだけでいいのですか?
それともDLLがLoadできるか否かを知りたいのですか?
後者はPathの設定や実行モジュールの位置に依存します。
# あったところでLoadできなきゃ意味ないしねー

編集 削除
ぴょぴょ  2009-02-10 17:22:52  No: 69661  IP: 192.*.*.*

みいさん、
επιστημηさん
レスありがとうございます。

>ライブラリリンクで作ればDLLなくても動きます(基本コントロールのみなら)。
自作ソフトならこれで良いけど、他の人の作ったソフトを
動かすために dll を確認するツールを作りたい訳です。

>DLLの有無を知るだけでいいのですか?
>それともDLLがLoadできるか否かを知りたいのですか?
出来れば有無だけでなく正しくソフトでロードが可能かどうかも調べたいです。
(バージョンの確認も行いたい)

>後者はPathの設定や実行モジュールの位置に依存します。
確かにソフトによっては dll をシステム・フォルダ以外に置いて
動かすタイプがあり、基本的にシステム・フォルダ内の dll に
限定しようかと思っている。

編集 削除
maru  2009-02-10 17:44:16  No: 69662  IP: 192.*.*.*

「システム・フォルダ」がどこを指しているか知らないが、最近のDLLは
サイド・バイ・サイドになってるから、必要なDLLの特定はアプリ作成者
でないと難しいのでは?
無駄な努力にならないとよいのですが。

編集 削除
ぴょぴょ  2009-02-10 17:54:02  No: 69663  IP: 192.*.*.*

maruさんレスありがとう。

>無駄な努力にならないとよいのですが。
説明書で MFC のランタイムがないと動かないとか書かれていることがある。
この場合、どのフォルダに置くようにとはかかれていないので
必要な dll はシステム・フォルダに置けばよいと解釈している。

ちなみに僕の環境は VC2003.NET を使っているためか、
MFC3.0 はなく MFC4.0 と MFC7.0 が存在するようです。
古い MFC のランタイムはどのように用意すれば良いでしょうか?

編集 削除
maru  2009-02-10 18:31:51  No: 69664  IP: 192.*.*.*

> この場合、どのフォルダに置くようにとはかかれていないので
> 必要な dll はシステム・フォルダに置けばよいと解釈している。
昔はそうでしたが、現在はランタイムをインストールするために再頒布
ファイルがあります。

> 説明書で MFC のランタイムがないと動かないとか書かれていることがある。
今日の感覚では、非常に不親切なプログラムですね。
MFCランタイムが必要ならば、アプリのインストール時に再頒布ファイルも
同時にインストールすべきでしょう。

> 古い MFC のランタイムはどのように用意すれば良いでしょうか?
C:\Program Files\Microsoft Visual Studio .NET 2003\1041\redist.txt
を読んでください。インストール時にvcredist_x86.exeを実行しろと書いて
あります。このファイルはインストール先のどこかに格納されているはずで
す。

ちなみにあなたが考えているツールはDependcy Walkerではないですか?
VC6.0には標準でついてきますが、.Net 2003以降ツールメニューから
見かけなくなりましたね(.Net 2002からかな?)。いまVC2005の
C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\Bin
をみてみたらExe, Dll, HLPはあったけど、メニューには登録されてない。
VC2008にいたってはExeさえない。やっぱり、使用する機会がないという
ことかな。

編集 削除
ぴょぴょ  2009-02-11 21:12:45  No: 69665  IP: 192.*.*.*

maruさんへ。
> C:\Program Files\Microsoft Visual Studio .NET 2003\1041\redist.txt
読んでみました。
たくさんあるようですね。

> ちなみにあなたが考えているツールはDependcy Walkerではないですか?
今はここまで本格的には考えていません。
(興味はありますけどね)

今のところ
msvcrt.dll(VC6)
msvcr70.dll
msvcr71.dll
msvcrt20.dll
msvcrt40.dll
msvcr9.dll(2008)

mfc40.dll
mfc40loc.dll
mfc42.dll
mfc42loc.dll
mfc70.dll
MFC71.dll

などをチェックするように考えている。

バージョンはリソースから取得できることが分かった。
GetFileVersionInfo

編集 削除
ぴょぴょ  2009-02-11 22:45:03  No: 69666  IP: 192.*.*.*

次のソフトを参考に自分なりのチェッカを作ってみます。
http://www.forest.impress.co.jp/article/2006/09/22/runtimedetector.html
http://support.microsoft.com/kb/125476/ja

編集 削除