缺少注册表HKLM \ SOFTWARE \ Microsoft \ VisualStudio \ SxS \ VS7

时间:2014-06-12 16:42:10

标签: windows qt winapi visual-c++

离开我的机器几个星期后,我回来做了一些Qt-using-VC10的工作。问题的第一个迹象是关于" cl"的QtCreator错误。没有被识别,这让我发现C:\ Windows \ System32已经以某种方式从PATH中删除。无法识别" reg"命令使vcvarsall.bat无法设置VS100COMNTOOLS,如here所述。

上述线程指示我this,建议只需将C:\ Windows \ System32添加回PATH。

然而,我的烦恼还没有结束。一旦C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ VC \ vcvars32.bat(由vcvarsall.bat调用的脚本)能够调用" reg",它无法找到所需的密钥设置VS100COMNTOOLS。失败发生在以下行:

for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Microsoft\VisualStudio\SxS\VS7"     /v "10.0"') DO (
    @if "%%i"=="10.0" (
        @SET "VS100COMNTOOLS=%%k"
    )
)

我从vcvars32.bat获得的输出(具有未抑制的输出)是:

C:\Users\Bob\Desktop>for /F "tokens=1,2*" %i in ('reg query "HKLM\SOFTWARE\Micro
soft\VisualStudio\SxS\VS7" /v "10.0"') DO ()
ERROR: The system was unable to find the specified registry key or value.

果然,我的分支中指示的位置不存在。我的注册表树的相关子集如下所示:

HKEY_LOCAL_MACHINE\
  SOFTWARE\
    Microsoft\
      VisualStudio\
            10.0\
                Debugger\
            11.0\
                ...
            9.0\
                ...
            Debugger\ 
                ...

有谁知道这里发生了什么?在我两周的缺席后,自动窗口更新是否有责任?如何修复我的系统,以便vcvarsall.bat可以设置VS100COMNTOOLS?

2 个答案:

答案 0 :(得分:1)

我的问题基本相同。在我的情况下,我试图只安装Visual Studio编译器和可再发行组件而没有任何Visual Studio IDE实例。我花了很长时间研究它,试图正确地解决它'没有不必要地强制环境变量或修改或添加注册表值。

大多数建议都是从卸载任何Visual Studio 2010重新分发和/或编译器开始,然后通常在安装Windows SDK后按特定顺序重新安装它们。

在我的情况下,这似乎有所帮助,但并未完全解决问题。我最后做了以下事情。先进入

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat

我注释掉了第10行,因为如果采用goto setup_buildsku%VisualStudioVersion%变量永远不会像以前通常在文件中那样设置。 (vcbuildtools.bat再也不会被调用并不重要,因为我在启动命令提示符时首先调用它。)

然后,在

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\vcvars64.bat

在标记的部分GetVSCommonToolsDir中,它会在HKLMHKCU的注册表中查找

SOFTWARE\Microsoft\VisualStudio\SxS\VS7

SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7

我遇到的问题是(因为只安装了构建工具?)没有VS7个密钥,只有VC7个密钥,因此查找失败。

因此,我在vcvarsall.bat中注释了第99-103行,我的%VS140COMNTOOLSDIR%%VS100COMNTOOLSDIR%变量未被触及。 (在调用vcvarsall.bat之前,它们已在我的环境中设置。)

后来,我看到很多" ERROR: Cannot determine the location of the VS installation."但我的构建和编译仍然可以继续!

答案 1 :(得分:0)

是的,没错。我遇到了与丢失的regKey SxS相同的问题。 重新安装我的Visual Studio 10.0 - 更新SP1后,在HKM中重新定义了SxS HKM-RegKey。