无法在Windows 10上安装Windows SDK 7.1


77

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

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

某些组件无法安装

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

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

这不会让我那么担心,但是在尝试安装Visual Studio 2010编译器更新时,失败了,说

无法安装,因为未找到Windows SDK 7.1

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


1
请注意-Windows 10随附.NET 4.6,而不是.NET 4.5-请参阅msdn.microsoft.com/en-us/library/hh925568(v=vs.110).aspx
NextInLine 2015年

Answers:


26

@ dougg3的答案脚本如下:

首先安装SubInAcl,可以在此处从Microsoft下载。您可能需要将其添加到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"

真好!我应该指出,自我的原始答案以来,注册表中的.NET版本号已更改,并且我的版本当前也不与此答案中的版本匹配-因此,对于计划运行此脚本的任何人来说,这都是最佳选择首先检查您的注册表并更改脚本以使其匹配。
dougg3'2

编辑时考虑了@ dougg3的评论,将版本保留在变量中并恢复为相同的值
janv8000 2016年

1
reg ADD "HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full" /v Version /t REG_SZ /d %CurrentNDPv4ClientVersion% /reg:32 /f-不应该%CurrentNDPv4FullVersion%吗?它在我的机器上相同的值,但..
卢卡斯Z.

也曾在这里工作。杰里米(Jeremy)的回答指出,不要忘记先卸载VC ++ 2010 Redistributable。
mklein9'7

糟糕,如果您的用户名包含空格,这将失败。因此,将%username%替换为“%username%”。同样在我的Windows 10安装中,subinacl.exe不存在,我不得不在这里下载:microsoft.com/en-us/download/confirmation.aspx?
id

85

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

  1. 首先从控制面板上卸载所有Visual C ++ 2010 Redistributable。

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

  3. 挂载映像后,直接打开F:\ Setup \ SDKSetup.exe。


3
从@ dougg3无法安装C ++编译器:(该岗位的伎俩:不会改变我什么。
CedX

@CédricBelin同样的问题,您对此问题有解决方案吗?
xavierzhao

2
@xavierzhao最后使用了Nodegyp存储库上的说明,并安装了Visual C ++ Build Tools
CedX

1
它也对我有用,但是首先我必须删除.Net 4.6.2并再次安装4.0
Mattia72 '16

10
谢谢,为我工作。不过,要注意一件事:请注意为您的系统下载正确的ISO。下载页面上有3个文件,没有关于它们的说明。GRMSDK_EN_DVD.iso适用于x86,GRMSDKX_EN_DVD.iso适用于x64,我认为GRMSDKIAI_EN_DVD.iso适用于Itanium。
托马斯·列维斯克

76

我只是遇到了同样的问题。不知道这实际上有多安全,但是我可以通过暂时使安装程序以为我安装了其他版本的.NET 4.0来解决此问题。我打开了Process Monitor,并用它来监视setup.exe在做什么,以便确定它是如何确定我具有.NET 4.0的“预发行”版本的。

原来,它查看注册表中的以下两个字符串:

  • 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。安装程序似乎不喜欢此值。我暂时用4.0.30319regedit中的字符串替换了它们两个,以匹配InstallPath中的值,这似乎可以解决问题。当然,当我完成后,我将它们放回原来的状态。

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

可能比实际修改注册表更安全/更容易地拦截注册表读取,但这对我来说很简单!


直到下周,我才在win10机器附近,但这听起来很不错。
格雷格

我更改了两个值,但在尝试安装时仍然遇到相同的错误dotNetFx40_Full_setup.exe。此注册表修复无法为我解决问题。
Arvo Bowen

2
@ArvoBowen注册表黑客程序无法帮助您安装.NET 4.0;它允许您安装Windows SDK 7.1。您不需要运行dotNetFx40_Full_setup.exe,因为Windows 10已经安装了.NET 4。
dougg3'9

@ dougg3我终于直接安装了SDK,没有更改任何注册表项。但是消息说...require the RTM .NET Framework 4. Setup detected a pre-release version of the .NET Framework 4。所以我在想,如果它检测到“预发行版”,我想安装.Net 4的“标准”发行版。但是,我确实设法通过以下方法安装了它:stackoverflow.com/a/32534158/1039753谢谢!
Arvo Bowen

5

上面的Dougg3提供了很好的答案。为了对他人有所帮助,我仔细研究了整个过程,并做了一些屏幕截图,以防对他人有帮助。我确实有64位Windows 10。

这是Dougg引用的reg编辑文件路径。 s 在这里点击高级按钮

在此处输入图片说明

在顶部显示所有者的位置,单击更改链接 在此处输入图片说明

下一个图像有两个步骤-首先从“选择用户或组”中单击“高级”,然后在具有相同标题的下一个对话框中单击“立即查找”按钮。 在此处输入图片说明

找到您要更改所有者的用户,然后单击“确定”。 在此处输入图片说明

在下一页上单击确定

在此处输入图片说明

转到您先前在先前对话框中选择的用户,然后选择“允许完全控制”,然后单击“确定”。 在此处输入图片说明

现在,您可以编辑版本。 在此处输入图片说明

完成此操作后,将版本号还原为以前的版本号,然后撤消该注册表的完全控制权限。


我知道这篇原始文章已有两年历史,但是本周我遇到了同样的问题,发现他的文章有助于正确安装Windows SDK,这使我可以在QT中创建工具包。
CAM_344

1
NT SERVICE\TrustedInstaller是原始所有者的名称。完成后,我将其切换回该状态。您必须输入全名(而不仅仅是TrustedInstaller),以便Windows知道您在说什么。您也不需要递归地应用权限/所有权来欺骗安装程序。
Merlyn Morgan-Graham

2

在您的计算机上安装SDK 7.1,由于编译器的额外功能,它通常会失败,但是您首先需要这样做。

现在从Microsoft安装此编译器软件包:

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

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


请注意,在第一步(安装SDK 7.1)时,对话框仍会出现,并且C ++编译器仍呈灰色。另外:C ++编译器位于中C:\Program Files\Microsoft Visual Studio 10.0\VC\bin
user202729 '18

0

下载该exe。将扩展名从“ exe”更改为“ zip”。立即解压缩文件。从/ Setup目录中运行SDKSetup.exe



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.