お世話になります。
VB.netで、現在実行されているOSが32bitか64bitか確認するため、判定文で「System.Environment.Is64BitOperatingSystem」を使おうとしていますが、「Is64BitOperatingSystemはEnvironmentのメンバーではありません」と表示され、コンパイルエラーになってしまいます。
.NET Frameworkは4.6が入っているのですが、使うには宣言とか参照の追加とか、何らかの準備が必要なのでしょうか。
OSのビット数を調べたいのですが・・・
Re: OSのビット数を調べたいのですが・・・
回答になってなくて申し訳ないですが、下の画像は Visual Studio でオブジェクト ブラウザーを開いているスクリーンショットです。
System.Environment.Is64BitOperatingSystem は mscorlib に含まれるようですので、特別な Imports などは必要ないと思われます。
こちらでは、このようなソースで問題なくコンパイルと実行ができています。
Environment の他の関数(GetEnvironmentVariablなど)も使用できないのですか?
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など)も使用できないのですか?
Re: OSのビット数を調べたいのですが・・・
追記します。
こちらの環境は
Windows 7 Pro (32bit) Visual Studio 2015
Windows 8.1 Pro (64bit) Visual Studio 2017
.NET Framework は 4.5 です。
こちらの環境は
Windows 7 Pro (32bit) Visual Studio 2015
Windows 8.1 Pro (64bit) Visual Studio 2017
.NET Framework は 4.5 です。
Re: OSのビット数を調べたいのですが・・・
Bull様
回答ありがとうございます。
オブジェクトブラウザで確認してみましたが、Environmentの下にIs64BitOperatingSystemは入っていませんでした。
職場の同僚の指摘によると、対象のソリューションは元々VB2010で作成し、Windows7上で動作していたものであり、mscorlibのバージョンが2.0.0.0であるのが原因かも知れないとの事でした。
仮に追加できたとしても、Windows7上に持って行ったときに動かないと意味がないので、別の方法を試してみようと思います。
回答ありがとうございます。
オブジェクトブラウザで確認してみましたが、Environmentの下にIs64BitOperatingSystemは入っていませんでした。
職場の同僚の指摘によると、対象のソリューションは元々VB2010で作成し、Windows7上で動作していたものであり、mscorlibのバージョンが2.0.0.0であるのが原因かも知れないとの事でした。
仮に追加できたとしても、Windows7上に持って行ったときに動かないと意味がないので、別の方法を試してみようと思います。
Re: OSのビット数を調べたいのですが・・・
同僚の方が指摘されている内容に含まれているとは思いますが,プロジェクトのTarget Frameworkが.NET Framework 3.5になっている,ということはないでしょうか。tosh さんが書きました: ↑5年前職場の同僚の指摘によると、対象のソリューションは元々VB2010で作成し、Windows7上で動作していたものであり、mscorlibのバージョンが2.0.0.0であるのが原因かも知れないとの事でした。
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以降) が等しいか調べる