繁体   English   中英

无法在 Windows 10 上安装 Windows SDK 7.1

[英]Cannot install Windows SDK 7.1 on Windows 10

我是一名拥有 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 编译器更新时,这失败了,说

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

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

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

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

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

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

我刚刚遇到了同样的问题。 不知道这实际上有多安全,但我能够通过暂时欺骗安装程序使我认为我安装了不同版本的 .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作为用户名)。

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

@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"

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

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

在此处输入图片说明

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

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

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

在下一页点击确定

在此处输入图片说明

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

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

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

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

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

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

然后它将安装编译器并使使用编译器成为可能。

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

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

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

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

pip install -U pip

pip install psycopg2-binary

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM