.Net SDK Framework 4.5.1注册表项

时间:2013-08-07 04:33:29

标签: .net sdk frameworks

我一直在努力更新一个工具,允许用户选择SDK版本和位类型来运行.Net Framework SDK工具。

要做到这一点,需要获取最新SDK的安装位置,我们一直回到v1.0。到目前为止,我已找到以下内容并寻找确认。

v1.0,v1.1和v2.0框架安装文件夹注册表项位于相应的注册表平台版本下。即,64位安装文件夹的定位是64位注册表项,其中32位安装目录是32位注册表项。

Examples:

Windows XP:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework 

Windows 7 64 bit (v2.0 only):
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\.NETFramework\v2.0
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\.NETFramework\v2.0

v3.0,v3.5,v4.0框架安装文件夹在32位和64位注册表项中都有32位安装文件夹和64位安装文件夹。这使得这些版本足够简单。只需将密钥读作OS位版本即可。

Examples:

Windows 7 64 bit:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1\WinSDKNetFx35Tools
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1\WinSDKNetFx35Tools-x64

v4.5,v4.5.1框架安装文件夹似乎只存在于32位注册表项下。即使存在64位安装,注册表项也只存在于3264WoW节点下,这意味着您必须像32位应用程序一样读取它。

Examples:

Windows 7 64 bit:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.1A\WinSDK-NetFx40Tools
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.1A\WinSDK-NetFx40Tools-x64

注意在64位窗口上使用带有32位标志的注册表读取时,将读取对Wow6432Node的任何引用。我从未直接准备好Wow6432Node,只需向注册表对象指定要读取的部分即可。

这看起来很复杂,让我觉得我没弄错。此外,我无法在.Net SDK安装位置找到任何权威文档。

所以问题是我在这里错过了什么或者有错误。

1 个答案:

答案 0 :(得分:1)

你是对的,没有更好的解决方案,阅读8.1A路径z Wow6432Node

public static string GetSdk81Path(string sdkIdent)
        {
            string regPath = Path.Combine(@"SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.1A\", sdkIdent);
            using (RegistryKey baseKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32))
            using (RegistryKey regKey  = baseKey.OpenSubKey(regPath, false))
            {
                if (regKey == null)
                {
                    throw new RegistryKeyNotFoundException("Registry key not found.", baseKey, regPath);
                }
                return regKey.GetValue("InstallationFolder").ToString();
            }
        }