C# 取得執行環境作業系統

從 .NET 開始,C# 是跨平台的,那要如何確定程式是執行在哪個作業系統上呢?
直接看程式碼:
    
using System.Runtime.InteropServices;

Console.WriteLine(RuntimeInformation.IsOSPlatform(OSPlatform.FreeBSD)); // False
Console.WriteLine(RuntimeInformation.IsOSPlatform(OSPlatform.Linux)); // False
Console.WriteLine(RuntimeInformation.IsOSPlatform(OSPlatform.OSX)); // False
Console.WriteLine(RuntimeInformation.IsOSPlatform(OSPlatform.Windows)); // True
    

註: 筆者測試時執行的作業系統為 Windows 11 專業版 22H2

那能不能看到作業系統資訊?
    
Console.WriteLine(Environment.OSVersion.Platform); // Win32NT
Console.WriteLine(Environment.OSVersion.VersionString); // Microsoft Windows NT 10.0.22621.0
Console.WriteLine(Environment.OSVersion); // Microsoft Windows NT 10.0.22621.0

// 64 位元
Console.WriteLine(Environment.Is64BitOperatingSystem); // True
Console.WriteLine(Environment.Is64BitProcess); // True

    

可以是可以,只是沒有那麼準確,並且在 .NET 5 以前的版本中會更加的不準確,詳細資訊可以參考下面的連結

參考資料:
Environment.OSVersion returns the correct operating system version
Environment.OSVersion Property

留言