无法在 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,来安装WindowsSDK 7.1,但是安装程序报错:
Some components cannot be installed
Some Windows SDK components require the RTM .NET Framework 4. Setup detected a pre-release version of the .NET Framework 4. If you continue with Setup, these components will not be installed. If you want to install these components, click Cancel, then install the .NET Framework 4 from http://go.microsoft.com/fwlink/?LinkID=187668 and then rerun Setup.
但是,Windows10 随 .NET 4.5 一起提供,据我所知还有另一个版本检查问题。
这不会让我太担心,但是在尝试安装 Visual Studio 2010 编译器更新时,失败了,说
cannot install because windows sdk 7.1 is not found
尝试安装 .NET 4 失败,因为它检测到更高版本的 .NET。
我刚刚 运行 遇到了同样的问题。不知道这实际上有多安全,但我可以通过暂时让安装程序认为我安装了不同版本的 .NET 4.0 来解决这个问题。我打开 Process Monitor 并用它来监视 setup.exe 所做的一切,以便了解它是如何确定我拥有 "pre-release" 版本的 .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.30319
替换了它们,以匹配 InstallPath 中的值,这似乎可以解决问题。当然,当我完成后,我把它们放回原来的样子。
但是,我没有更改这些值的权限,所以有点棘手。我右键单击 Client
键,选择权限,然后单击高级。然后我将所有者更改为我的用户帐户而不是 TrustedInstaller。这允许我为自己添加完全控制权限,以便我可以修改 Version
值。我在 Full
键上重复了相同的过程。安装程序成功完成后,我将原始版本值放回 (4.6.00079
),删除了我为自己添加的权限,并将所有者恢复为 TrustedInstaller(为此,键入 NT SERVICE\TrustedInstaller
作为用户名).
可能有一种 safer/easier 拦截注册表读取的方法而不是实际修改注册表,但这对我来说很简单!
我偶然发现了另一种解决方法,我也在 msdn thread:
上发布了它
首先从控制面板卸载任何 Visual C++ 2010 Redistributables。
下载对应的offline ISO image from the Windows SDK archive. This列出哪个ISO是哪个
挂载镜像后直接打开F:\Setup\SDKSetup.exe
@dougg3 的回答脚本:
首先安装SubInAcl,可以从微软下载here。您可能需要将其添加到您的路径中,例如: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'。现在提取文件。 运行 SDKSetup.exe 来自 /Setup 目录
我只是需要快速编译其他人的代码,这就是我在 Windows 10 上的解决方法。
https://www.microsoft.com/en-us/download/details.aspx?id=4422
在您的计算机上安装 SDK 7.1,它通常会在编译器附加功能上失败,但您首先需要它。
现在从微软安装这个编译器包:
http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=4422
然后它会安装编译器并可以使用编译器。
上面 Dougg3 的回答很好。为了帮助其他人,我完成了整个过程并拍摄了一些屏幕截图以防它对任何人有帮助。我有 64 位 Windows 10.
这是 Dougg 引用的 reg 编辑文件路径。
这里点击高级按钮
下一张图片有两个步骤 - 首先从 "Select User or Group" 单击“高级”,然后在下一个具有相同标题的对话框中单击“立即查找”按钮。
在下一页点击确定
转到您刚刚 select 在之前的对话中输入的用户,然后 select 允许完全控制,然后单击确定
完成此操作后,将版本号恢复为之前的版本号并撤消为您自己授予该注册表的完全控制权。
如果您在这里尝试安装 psycopg2
,请确保您的 pip 是 up-to-date,否则您会收到这些错误。
pip install -U pip
pip install psycopg2-binary
我是一名软件开发人员,拥有 Windows 10 台 PC。我必须使用 Windows SDK 7.1
支持一些在 Visual Studio 2010 中编写的旧软件在尝试搭建开发环境时,我已经成功安装了VS2010,来安装WindowsSDK 7.1,但是安装程序报错:
Some components cannot be installed
Some Windows SDK components require the RTM .NET Framework 4. Setup detected a pre-release version of the .NET Framework 4. If you continue with Setup, these components will not be installed. If you want to install these components, click Cancel, then install the .NET Framework 4 from http://go.microsoft.com/fwlink/?LinkID=187668 and then rerun Setup.
但是,Windows10 随 .NET 4.5 一起提供,据我所知还有另一个版本检查问题。
这不会让我太担心,但是在尝试安装 Visual Studio 2010 编译器更新时,失败了,说
cannot install because windows sdk 7.1 is not found
尝试安装 .NET 4 失败,因为它检测到更高版本的 .NET。
我刚刚 运行 遇到了同样的问题。不知道这实际上有多安全,但我可以通过暂时让安装程序认为我安装了不同版本的 .NET 4.0 来解决这个问题。我打开 Process Monitor 并用它来监视 setup.exe 所做的一切,以便了解它是如何确定我拥有 "pre-release" 版本的 .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.30319
替换了它们,以匹配 InstallPath 中的值,这似乎可以解决问题。当然,当我完成后,我把它们放回原来的样子。
但是,我没有更改这些值的权限,所以有点棘手。我右键单击 Client
键,选择权限,然后单击高级。然后我将所有者更改为我的用户帐户而不是 TrustedInstaller。这允许我为自己添加完全控制权限,以便我可以修改 Version
值。我在 Full
键上重复了相同的过程。安装程序成功完成后,我将原始版本值放回 (4.6.00079
),删除了我为自己添加的权限,并将所有者恢复为 TrustedInstaller(为此,键入 NT SERVICE\TrustedInstaller
作为用户名).
可能有一种 safer/easier 拦截注册表读取的方法而不是实际修改注册表,但这对我来说很简单!
我偶然发现了另一种解决方法,我也在 msdn thread:
上发布了它首先从控制面板卸载任何 Visual C++ 2010 Redistributables。
下载对应的offline ISO image from the Windows SDK archive. This列出哪个ISO是哪个
挂载镜像后直接打开F:\Setup\SDKSetup.exe
@dougg3 的回答脚本:
首先安装SubInAcl,可以从微软下载here。您可能需要将其添加到您的路径中,例如: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'。现在提取文件。 运行 SDKSetup.exe 来自 /Setup 目录
我只是需要快速编译其他人的代码,这就是我在 Windows 10 上的解决方法。
https://www.microsoft.com/en-us/download/details.aspx?id=4422
在您的计算机上安装 SDK 7.1,它通常会在编译器附加功能上失败,但您首先需要它。
现在从微软安装这个编译器包:
http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=4422
然后它会安装编译器并可以使用编译器。
上面 Dougg3 的回答很好。为了帮助其他人,我完成了整个过程并拍摄了一些屏幕截图以防它对任何人有帮助。我有 64 位 Windows 10.
这是 Dougg 引用的 reg 编辑文件路径。
下一张图片有两个步骤 - 首先从 "Select User or Group" 单击“高级”,然后在下一个具有相同标题的对话框中单击“立即查找”按钮。
在下一页点击确定
转到您刚刚 select 在之前的对话中输入的用户,然后 select 允许完全控制,然后单击确定
完成此操作后,将版本号恢复为之前的版本号并撤消为您自己授予该注册表的完全控制权。
如果您在这里尝试安装 psycopg2
,请确保您的 pip 是 up-to-date,否则您会收到这些错误。
pip install -U pip
pip install psycopg2-binary