OSのビット数を調べたいのですが・・・

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: OSのビット数を調べたいのですが・・・

Re: OSのビット数を調べたいのですが・・・

#5

by YuO » 5年前

tosh さんが書きました:
5年前
職場の同僚の指摘によると、対象のソリューションは元々VB2010で作成し、Windows7上で動作していたものであり、mscorlibのバージョンが2.0.0.0であるのが原因かも知れないとの事でした。
同僚の方が指摘されている内容に含まれているとは思いますが,プロジェクトのTarget Frameworkが.NET Framework 3.5になっている,ということはないでしょうか。
Windows 7は標準では.NET Framework 3.5が入っていて.NET 4系が入っていないため,プロジェクトが.NET 2.0/3.0/3.5向けに作られている可能性があります。

上記であるならば,解決策としてはいくつかあると思います。
  • .NET Framework 4系にTarget Frameworkのバージョンを上げる ref) Visual Studio で .NET Framework のバージョンを指定する | Microsoft Docs # 対象とするバージョンを変更するには
    →可能であるならばこれが一番の推奨方法です。ただし,土台を変えるわけですから,テストが必要です。
  • 既存を真似る
    →一応Reference Sourceに.NET Framework 4.7.2 (投稿時点) のコードがあります。AnyCPUでは使えませんが。
  • 真面目に作る
    GetNativeSystemInfo APIを呼び出し,SYSTEM_INFO::wProcessorArchitectureを見て判断することになります。
  • 手抜きする ref) WOW64 Implementation Details | Microsoft Docs # Environment Variables
    • PROCESSOR_ARCHITEW6432 環境変数
    • ProgramW6432 環境変数と ProgramFiles 環境変数 (Windows 7/Windows Server 2008 R2以降) が等しいか調べる

Re: OSのビット数を調べたいのですが・・・

#4

by tosh » 5年前

Bull様
回答ありがとうございます。

オブジェクトブラウザで確認してみましたが、Environmentの下にIs64BitOperatingSystemは入っていませんでした。
職場の同僚の指摘によると、対象のソリューションは元々VB2010で作成し、Windows7上で動作していたものであり、mscorlibのバージョンが2.0.0.0であるのが原因かも知れないとの事でした。

仮に追加できたとしても、Windows7上に持って行ったときに動かないと意味がないので、別の方法を試してみようと思います。

Re: OSのビット数を調べたいのですが・・・

#3

by Bull » 5年前

追記します。

こちらの環境は
Windows 7 Pro (32bit) Visual Studio 2015
Windows 8.1 Pro (64bit) Visual Studio 2017

.NET Framework は 4.5 です。

Re: OSのビット数を調べたいのですが・・・

#2

by Bull » 5年前

回答になってなくて申し訳ないですが、下の画像は Visual Studio でオブジェクト ブラウザーを開いているスクリーンショットです。
System.Environment.Is64BitOperatingSystem は mscorlib に含まれるようですので、特別な Imports などは必要ないと思われます。

コード:

Module Module1
    Sub Main()
        If Environment.Is64BitOperatingSystem Then
            Console.WriteLine("64Bit OS です")
        Else
            Console.WriteLine("64Bit OS ではありません")
        End If
    End Sub
End Module
こちらでは、このようなソースで問題なくコンパイルと実行ができています。

Environment の他の関数(GetEnvironmentVariablなど)も使用できないのですか?
添付ファイル
VisualStudio20181012_001.png

OSのビット数を調べたいのですが・・・

#1

by tosh » 5年前

お世話になります。

VB.netで、現在実行されているOSが32bitか64bitか確認するため、判定文で「System.Environment.Is64BitOperatingSystem」を使おうとしていますが、「Is64BitOperatingSystemはEnvironmentのメンバーではありません」と表示され、コンパイルエラーになってしまいます。

.NET Frameworkは4.6が入っているのですが、使うには宣言とか参照の追加とか、何らかの準備が必要なのでしょうか。

ページトップ