Как мне найти путь к Visual Studio в реестре с помощью Python? - PullRequest
2 голосов
/ 03 декабря 2009

У нас есть этот код, но он больше не работает:

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

Кажется, это перестало работать с тех пор, как я обновил Python 2.6 x64 с x86 (но я не уверен) Возможно, обновление до Win7 вызвало проблему.

1 Ответ

5 голосов
/ 03 декабря 2009

Это часть x64.

Поскольку Visual Studio является 32-разрядным приложением, его записи реестра переносятся в 32-разрядное подземелье WoW. Вы хотите посмотреть в

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

Обратите внимание, что если вы запустите Python как 32-битный исполняемый файл, он также будет перенаправлен - так что все "просто работает". Только когда вы ищите 32-битную информацию из 64-битного приложения или наоборот, вы сталкиваетесь с проблемами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...