无法在 Windows 10 上安装 Windows SDK 7.1

Posted

技术标签:

【中文标题】无法在 Windows 10 上安装 Windows SDK 7.1【英文标题】:Cannot install Windows SDK 7.1 on Windows 10 【发布时间】:2015-11-12 12:32:12 【问题描述】:

我是一名使用 Windows 10 电脑的软件开发人员。我必须支持一些使用 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 编译器更新时,这会失败,说

无法安装,因为未找到 windows sdk 7.1

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

【问题讨论】:

请注意 - Windows 10 附带 .NET 4.6,而不是 .NET 4.5 - 请参阅 msdn.microsoft.com/en-us/library/hh925568(v=vs.110).aspx Windows SDK Setup failure的可能重复 【参考方案1】:

@dougg3 的回答脚本:

首先安装SubInAcl,可以从微软here下载。您可能需要将其添加到您的 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 的评论,保持版本变量并恢复到相同的值 reg ADD "HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full" /v Version /t REG_SZ /d %CurrentNDPv4ClientVersion% /reg:32 /f- 不应该有%CurrentNDPv4FullVersion% 吗?但它在我的机器上具有相同的价值.. 也在这里工作过。不要忘记先卸载 VC++ 2010 Redistributables,正如 Jeremy 的回答所指出的那样。 显然 subinacl 已被弃用,应该用其他东西代替,powershell set-acl 也许?感谢@Holmes Queen 获取网络存档下载链接。【参考方案2】:

如果您在这里尝试安装 psycopg2,请确保您的 pip 是最新的,否则您会收到这些错误。

pip install -U pip

pip install psycopg2-binary

见 - http://initd.org/psycopg/docs/install.html

【讨论】:

【参考方案3】:

上面 Dougg3 的回答很好。只是为了帮助其他人,我完成了整个过程并拍摄了一些屏幕截图,以防它帮助任何人。我确实有 64 位 Windows 10。

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

在顶部显示所有者的位置单击更改链接

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

找到您要更改所有者的用户,然后单击确定

点击确定进入下一页

转到您刚刚在之前的对话中选择的用户,然后选择允许完全控制,然后单击确定

现在您可以编辑版本了。

完成此操作后,将版本号恢复为之前的版本并撤消为您自己提供对该注册表的完全控制权。

【讨论】:

我知道这篇原始帖子已经有几年了,但我本周遇到了同样的问题,发现他的帖子可以帮助正确安装 Windows SDK,这让我可以在 QT 中创建一个工具包。跨度> NT SERVICE\TrustedInstaller 是原始所有者的名称。完成后,我将其切换回该状态。您必须输入全名(不仅仅是TrustedInstaller),Windows 才能知道您在说什么。您也不需要递归地应用权限/所有权来诱骗安装程序工作。【参考方案4】:

在您的计算机上安装 SDK 7.1,它通常会在编译器附加功能上失败,但您首先需要这个。

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

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

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

【讨论】:

请注意,第一步(安装SDK 7.1)对话框仍然出现,C++编译器仍然是灰色的。另外:C++ 编译器位于 C:\Program Files\Microsoft Visual Studio 10.0\VC\bin 中。【参考方案5】:

我只需要快速编译别人的代码,这就是我在 Windows 10 上的解决方法。

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

【讨论】:

【参考方案6】:

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

【讨论】:

【参考方案7】:

我偶然发现了另一种解决方法,我也在 msdn thread 上发布了该解决方法:

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

    从 Windows SDK 存档下载相应的offline ISO image。 This 列出了哪个 ISO。

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

【讨论】:

对我没有任何改变:无法安装 C++ 编译器 :(@dougg3 的帖子成功了。 @CédricBelin 同样的问题,你有解决这个问题的办法吗? @xavierzhao 终于使用Nodegyp repository上的说明,安装了Visual C++ Build Tools。 它也对我有用,但首先我必须删除 .Net 4.6.2 并再次安装 4.0。 谢谢,为我工作。不过要注意一件事:注意为您的系统下载正确的 ISO。下载页面有3个文件,没有关于它们的解释。 GRMSDK_EN_DVD.iso 用于 x86,GRMSDKX_EN_DVD.iso 用于 x64,我假设 GRMSDKIAI_EN_DVD.iso 用于安腾。【参考方案8】:

我刚刚遇到了同样的问题。不知道这实际上有多安全,但我能够通过暂时欺骗安装程序以为我安装了不同版本的 .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。安装程序似乎不喜欢这个值。我暂时用 regedit 中的字符串 4.0.30319 替换了它们以匹配来自 InstallPath 的值,这似乎可以解决问题。当然,当我完成后,我把它们放回原来的样子。

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

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

【讨论】:

直到下周我才靠近 win10 机器,但这对我来说听起来不错。 我更改了这两个值,但在尝试安装 dotNetFx40_Full_setup.exe 时仍然出现相同的错误。此注册表修复无法解决我的问题。 @ArvoBowen 注册表黑客无法帮助您安装 .NET 4.0;它允许您安装 Windows SDK 7.1。您不需要运行 dotNetFx40_Full_setup.exe,因为 Windows 10 已经安装了 .NET 4。 @dougg3 我终于直接安装了 SDK,没有更改任何注册表项。但是消息说...require the RTM .NET Framework 4. Setup detected a pre-release version of the .NET Framework 4。所以我在想,如果它检测到“预发布”,我想安装 .Net 4 的“标准”版本。但我确实设法通过这条路线安装了它***.com/a/32534158/1039753 谢谢!

以上是关于无法在 Windows 10 上安装 Windows SDK 7.1的主要内容,如果未能解决你的问题,请参考以下文章

如何在Windows上安装FFmpeg程序

如何在Windows上安装FFmpeg程序

如何在Windows上安装FFmpeg程序

如何在Windows上安装FFmpeg程序

如何在Windows上安装FFmpeg程序

如何在Windows上安装FFmpeg程序