首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法在Windows 10上安装Windows SDK 7.1

无法在Windows 10上安装Windows SDK 7.1
EN

Stack Overflow用户
提问于 2015-08-19 17:28:25
回答 8查看 74.4K关注 0票数 78

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

在尝试设置开发环境时,我已经成功安装了VS2010,并来安装Windows SDK7.1,但是安装程序给出了错误:

无法安装某些组件

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

然而,Windows10自带了Windows4.5,所以据我所知,还有另一个版本检查问题。

这不会让我太担心,但在尝试安装Visual Studio2010编译器更新时,它失败了,说

无法安装

,因为找不到windows SDK7.1

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

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2016-02-12 15:59:08

@Dougg3的答案脚本化:

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

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

代码语言:javascript
复制
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"
票数 28
EN

Stack Overflow用户

发布于 2015-09-12 09:11:15

我偶然发现了另一种变通办法,我也把它贴在了msdn thread

  1. 从控制面板中卸载所有Visual C++ 2010可再发行组件,并从Windows SDK存档文件中删除相应的offline ISO imageThis列出哪个ISO是哪个。
  2. 挂载映像后,直接打开F:\Setup\SDKSetup.exe。
票数 88
EN

Stack Overflow用户

发布于 2015-09-01 11:08:12

我刚刚遇到了同样的问题。我不知道这样做到底有多安全,但我暂时骗过了安装程序,让他们以为我安装了一个不同版本的.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

在我的Windows10机器上,它们目前都是4.6.00079。安装程序似乎不喜欢这个值。我在regedit中临时将它们替换为字符串4.0.30319,以匹配InstallPath中的值,这似乎起到了作用。当然,当我完成后,我把它们放回原来的样子。

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

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

票数 78
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32091593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档