【.NET/C#】OSを判定する

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【.NET/C#】OSを判定する

2024-7-25 |

.NETでプログラムが動いてるOSを判定したい!

概要

今回の記事では、.NETでプログラムが動いてるOSを判定する手順を掲載する。

.NETはWindows以外のOS、UbuntuとかMacOSなどでも実行できるんだけども、動いてるOSによって処理を変えたい場合があってそんな時にOSを判定できると良い感じ。

仕様書

環境

  • NET 8.0

手順書

OSの情報を文字列として出力しつつ、定数でOSを判定する例。

using System.Runtime.InteropServices;

namespace tests
{
    internal class Program
    {
        static void GetOSInfo()
        {
            Console.WriteLine(RuntimeInformation.OSDescription);

            if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
            {
                Console.WriteLine("Windows");
            }
            else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
            {
                Console.WriteLine("Linux");
            }
            else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
            {
                Console.WriteLine("OSX");
            }
        }

        static void Main(string[] args)
        {
            GetOSInfo();
        }
    }
}

プログラムを実行すると私の環境では下記のような感じでターミナルに出力される。

Microsoft Windows 10.0.22631
Windows

フィールドRuntimeInformation.OSDescriptionからOSの情報を文字列で取得できる。

メソッドRuntimeInformation.IsOSPlatformの引数に列挙型OSPlatformを渡してOSを判定できる。

まとめ(感想文)

なんやかんやWindowsとUbuntuで処理を変えたくなるケースがよくあるのでそんな時に使えるかもね!