C#で現在使用されているMicrosoft Windows SDKの場所とバージョンを取得するにはレジストリを参照します。64ビット環境で32ビットアプリケーションを起動した場合、WOW64により異なるキーを参照してしまうことに注意してください。
レジストリキーの場所
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows
取得するサンプルコード(.NET Frameworkコンソールアプリケーション)
using System; using Microsoft.Win32; namespace ConsoleApp1 { class Program { static void Main() { Console.WriteLine($"現在のインストール場所:{MicrosoftWindowsSDKInfo.CurrentInstallFolderPath}"); Console.WriteLine($"現在のバージョン:{MicrosoftWindowsSDKInfo.CurrentVersion}"); } } public static class MicrosoftWindowsSDKInfo { // HKEY_LOCAL_MACHINEルートキー以下の場所 private const string MicrosoftWindowsSDKRegKeyPath = @"SOFTWARE\Microsoft\Microsoft SDKs\Windows"; public static string CurrentInstallFolderPath => GetWindowsKeyValue<string>("CurrentInstallFolder"); public static string CurrentVersion => GetWindowsKeyValue<string>("CurrentVersion"); private static T GetWindowsKeyValue<T>(string name, T defaultValue = default(T)) { // WOW64の回避 using (var hklm = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64)) { using (var key = hklm.OpenSubKey(MicrosoftWindowsSDKRegKeyPath)) { return (T)key.GetValue(name, defaultValue); } } } } }
2021/3/10:この記事は別のブログで投稿した記事を移動したものです。