如何使用Python在注册表中找到Visual Studio的路径?

时间:2009-12-03 19:58:09

标签: visual-studio registry

我们有这个代码,但它不再起作用了:

def get_vcvarsall(generator):
 value = None
 type = None
 key_name = r'SOFTWARE\Microsoft\VisualStudio\SxS\VC7'
 key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, key_name)
 if generator.startswith('Visual Studio 8'):
  value,type = _winreg.QueryValueEx(key, '8.0')
 elif generator.startswith('Visual Studio 9'):
  value,type = _winreg.QueryValueEx(key, '9.0')
 elif generator.startswith('Visual Studio 10'):
  value,type = _winreg.QueryValueEx(key, '10.0')
 else:
  raise Exception('Cannot determin vcvarsall.bat location for: ' + generator)
 path = value + 'vcvarsall.bat'
 if not os.path.exists(path):
  raise Exception("'%s' not found.")
 return path

自从我从x86升级到Python 2.6 x64后,这似乎停止了工作(但我无法确定)。可能已经升级到导致问题的Win7。

1 个答案:

答案 0 :(得分:5)

这是x64部分。

由于Visual Studio是一个32位应用程序,因此它的注册表项在32位WoW dungeon中被推入。你想看看

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7

请注意,如果您将Python作为32位可执行文件运行,它也会被重定向 - 所以一切都“正常”。只有当您从64位应用程序中查找32位信息时才会遇到问题。