【.NET/C#】Windowsで設定されているテーマを判定する

ネコニウム研究所

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

【.NET/C#】Windowsで設定されているテーマを判定する

2024-9-24 | ,

.NETでWindowsで設定されてるテーマを判定したい!

概要

今回の記事では、.NETでWindowsで設定されてるテーマを判定する手順を掲載する。

「個人設定->色」の「モードを選ぶ」の項目をコードで取得したい!

仕様書

環境

  • .NET 8

手順書

テーマの設定はレジストリSoftware\Microsoft\Windows\CurrentVersion\Themes\Personalizeの項目AppsUseLightThemeの値で判定できる。

using Microsoft.Win32;
using System.Diagnostics;
using System.Runtime.Versioning;

public static class Theme
{
    [SupportedOSPlatform("windows")]
    public static bool IsDark()
    {
        const string registryKeyPath = @"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize";
        const string valueName = "AppsUseLightTheme";

        try
        {
            using (RegistryKey? key = Registry.CurrentUser.OpenSubKey(registryKeyPath))
            {
                if (key != null)
                {
                    object? registryValue = key.GetValue(valueName);
                    if (registryValue is int intValue)
                    {
                        return intValue == 0;
                    }
                }
            }
        }
        catch (Exception ex)
        {
            Debug.WriteLine($"Error: {ex.Message}");
        }

        return false;
    }

    [SupportedOSPlatform("windows")]
    public static bool IsLight()
    {
        return !IsDark();
    }
}

レジストリの項目の値が0だとダークテーマ。0以外の場合はライトテーマと判定してる。

まとめ(感想文)

テーマの切り替えまでの処理を書くとアプリ開発のスタート地点経った気がする今日この頃。