无法在Windows 10上安装Windows SDK 7.1

我是一个Windows 10 PC的软件开发人员。 我必须支持一些使用Windows SDK 7.1在Visual Studio 2010中编写的较旧的软件

在试图设置开发环境时,我已经成功安装了VS2010,并且安装了Windows SDK 7.1,但是安装程序给出了错误:

一些组件不能被安装

某些Windows SDK组件需要安装RTM .NET Framework 4.安装程序检测到.NET Framework 4的预发布版本。如果继续安装,则不会安装这些组件。 如果要安装这些组件,请单击取消,然后从http://go.microsoft.com/fwlink/?LinkID=187668安装.NET Framework 4,然后重新运行安装程序。

但是,Windows 10自带了.NET 4.5,据我所知,还有另一个版本检查问题。

这不会太担心,但是在试图安装Visual Studio 2010编译器更新时,失败了

无法安装,因为没有findWindows SDK 7.1

尝试安装.NET 4失败,因为它检测到.NET的更高版本。

我偶然发现了另一个解决方法,我也发布在msdn线程上 :

  1. 首先从控制面板卸载任何Visual C ++ 2010 Redistributable。

  2. 从Windows SDK存档下载相应的脱机ISO映像 。 这列出哪个ISO是哪个。

  3. 安装完映像后,直接打开F:\ Setup \ SDKSetup.exe。

我遇到了同样的问题。 不知道这实际上是多么的安全,但我可以暂时愚弄安装程序,因为我有一个不同版本的.NET 4.0安装。 我打开进程监视器,并用它来监视setup.exe正在做的事情,以了解如何确定我有一个“预发布”版本的.NET 4.0。

事实certificate,它看起来在registry中的这两个string:

  • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Client\Version
  • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Full\Version

在我的Windows 10机器上,这些都是4.6.00079 。 安装程序似乎不喜欢这个值。 我暂时用regedit中的string4.0.30319replace它们,以匹配来自InstallPath的值,这似乎是伎俩。 当然,当我完成的时候,我把它们放回原来的样子。

但是,我没有权限去改变这些值,所以这有点棘手。 我右键单击Client密钥,select权限,然后单击高级。 然后,我将所有者更改为我的用户帐户,而不是TrustedInstaller。 这允许我为自己添加完全控制的权限,所以我可以修改Version值。 我在Full键上重复了同样的过程。 安装程序成功完成后,我将原始版本值放回( 4.6.00079 ),删除了为自己添加的权限,并将所有者恢复到TrustedInstaller(要这样做,请键入NT SERVICE\TrustedInstaller作为用户名)。

拦截registry读取可能比实际修改registry更安全/更简单,但这对我来说已经足够简单了!

@ dougg3的答案脚本:

首先安装SubInAcl,可以在这里从微软下载。 您可能需要将其添加到您的path,例如: set PATH=%PATH%;C:\Program Files (x86)\Windows Resource Kits\Tools

然后在提升的cmd提示符下运行这些命令:

 for /f "tokens=2*" %%a in ('reg query "HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Client" /v Version /reg:32') do set "CurrentNDPv4ClientVersion=%%~b" for /f "tokens=2*" %%a in ('reg query "HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full" /v Version /reg:32') do set "CurrentNDPv4FullVersion=%%~b" subinacl.exe /subkeyreg "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4" /setowner="%username%" subinacl.exe /subkeyreg "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4" /grant="%username%"=f reg ADD "HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full" /v Version /t REG_SZ /d 4.0.30319 /reg:32 /f reg ADD "HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Client" /v Version /t REG_SZ /d 4.0.30319 /reg:32 /f echo start your installer now pause reg ADD "HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Client" /v Version /t REG_SZ /d %CurrentNDPv4ClientVersion% /reg:32 /f reg ADD "HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full" /v Version /t REG_SZ /d %CurrentNDPv4FullVersion% /reg:32 /f subinacl.exe /subkeyreg "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4" /revoke="%username%" subinacl.exe /subkeyreg "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4" /setowner="NT SERVICE\TrustedInstaller" 

下载exe。 将扩展名从“exe”更改为“zip”。 现在提取文件。 从/ Setup目录中运行SDKSetup.exe

我只需要快速编译别人的代码,这是我在Windows 10上的修复。

https://www.microsoft.com/en-us/download/details.aspx?id=4422

在你的电脑上安装SDK 7.1,它大多会在编译器额外的时候失败,但你首先需要这个。

现在从Microsoft安装这个编译器包:

http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=4422

然后它将安装编译器并使其可以使用编译器。

上面的Dougg3很好的回答。 只要这样可以帮助别人,我就会经历这个过程,并采取一些屏幕截图,以防万一。 我有64位的Windows 10。

这是Dougg引用的reg编辑文件path。 THS 这里点击高级button

在这里输入图像描述

在顶部的所有者点击更改链接 在这里输入图像描述

下一个图像有两个步骤 – 首先点击“select用户或组”的高级,然后点击下一个具有相同标题的对话框上的查找button。 在这里输入图像描述

find要更改所有者的用户,然后单击确定 在这里输入图像描述

点击下一页上的确定

在这里输入图像描述

转到刚在上一个对话框中select的用户,然后select允许完全控制,然后单击确定 在这里输入图像描述

现在你可以编辑版本。 在这里输入图像描述

完成之后,将版本号还原为之前的版本,并撤消给予该registry的完全控制。