C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: Windows8上でのFrameworkのバージョン取得


(過去ログ 113 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■66676 / inTopicNo.1)  Windows8上でのFrameworkのバージョン取得
  
□投稿者/ せんぺい (5回)-(2013/05/15(Wed) 10:05:03)

分類:[C#] 

SmtpClientでのメール送信について
http://bbs.wankuma.com/index.cgi?mode=all&namber=66581
にて、Windows8でメール送信すると件名が文字化けする問題で助けていただきましたが、新たな問題が発生し行き詰っています。(質問の主旨が違うので新しいスレにしております)

まずメール件名のエンコードをする際、実行環境がFramework 4.0だったら1回、4.5だったら二重エンコードすることで文字化けが発生しないことまで確認できています。

そこでFrameworkのバージョンを取得して分岐させようとしていますが、Windows8(Framework 4.5)上では4.0がリターンされ、どうにもうまくいきません。
下記の2方法を試しております。

1.System.Environment.Version.ToString() → 4.0.30319.18033
2.System.Runtime.InteropServices.RuntimeEnvironment.GetSystemVersion() → v4.0.30319

そもそも上記の方法では、アプリの対応バージョンが取得されるものなのでしょうか?
インストールされているバージョンを取得するには、レジストリを確認するなど、他に方法があるのでしょうか?

ご存知でしたら、宜しくお願いいたします。

引用返信 編集キー/
■66677 / inTopicNo.2)  Re[1]: Windows8上でのFrameworkのバージョン取得
□投稿者/ せんぺい (6回)-(2013/05/15(Wed) 10:23:03)
すみません。補足です。

> インストールされているバージョンを取得するには、レジストリを確認するなど、他に方法があるのでしょうか?

インストールされているFrameworkのバージョンをレジストリから取得する方法はわかっているつもりです。
他に方法があれば知りたいと思っています。

宜しくお願いいたします。

引用返信 編集キー/
■66680 / inTopicNo.3)  Re[2]: Windows8上でのFrameworkのバージョン取得
□投稿者/ COCOE (8回)-(2013/05/16(Thu) 10:39:19)
No66677 (せんぺい さん) に返信
> すみません。補足です。
>
>>インストールされているバージョンを取得するには、レジストリを確認するなど、他に方法があるのでしょうか?
>
> インストールされているFrameworkのバージョンをレジストリから取得する方法はわかっているつもりです。
> 他に方法があれば知りたいと思っています。
>
> 宜しくお願いいたします。
>

.NET2.0から.NET3.5まではCLR2.0で統一されていたので分かり易かったですが、
.NET4.0(CLR4.0)と.NET4.5(CLR4.5)の関係は分かり難いですね。
(置き換えだけど再コンパイル不要で動くハズ!とか言われても^^;)

既に確認済のようですが、確実に確認したいならレジストリしか無さそうです。

Environment.Versionで判定したいとなると・・・参考程度で要検証ですが
CLR4.5の表示は、Major、Minor、BuildまでCLR4.0と同じで、
Revisionによって判定するしかなさそうです。
判定方法は、おそらく Revision >= 17929

ttp://blogs.interknowlogy.com/2012/09/26/visual-studio-2012-version/

Windows8の環境が無いのですが、Windows7で.NET4.0と.NET4.5の環境同士で見比べると
.NET4.0 4.0.30319.296
.NET4.5 4.0.30319.18034
でした。
両方とも新規インストール状態ではなく、WindowsUpdateを適用しているので、
バージョンが変動している可能性があります。

Environment.Versionで4.5とかしなかったのは、やはり互換性を考えてのことなのでしょうね。
引用返信 編集キー/
■66682 / inTopicNo.4)  Re[3]: Windows8上でのFrameworkのバージョン取得
□投稿者/ せんぺい (7回)-(2013/05/16(Thu) 16:16:39)
No66680 (COCOE さん) に返信

COCOEさん、ありがとうございます。

> .NET2.0から.NET3.5まではCLR2.0で統一されていたので分かり易かったですが、
> .NET4.0(CLR4.0)と.NET4.5(CLR4.5)の関係は分かり難いですね。
> (置き換えだけど再コンパイル不要で動くハズ!とか言われても^^;)

まったくです(泣)

> 既に確認済のようですが、確実に確認したいならレジストリしか無さそうです。

やはりそうですか。
Windows8だけの問題ではなく、Vistaや7にFramework4.5をインストールした場合も同じ現象が発生するわけですから、確実にレジストリを参照して分岐することにします。

ありがとうございました。

引用返信 編集キー/
■66693 / inTopicNo.5)  Re[3]: Windows8上でのFrameworkのバージョン取得
□投稿者/ せんぺい (8回)-(2013/05/17(Fri) 09:13:48)
レジストリからFrameworkのバージョンを取得して、エンコード処理を分岐させることができましたので、解決済みとして報告します。

ありがとうございました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -