code: def find_vc_pdir(msvc_version):
      
      root = 'Software\\'
      try:
          hkeys = _VCVER_TO_PRODUCT_DIR[msvc_version]
      except KeyError:
          debug("Unknown version of MSVC: %s" % msvc_version)
          raise UnsupportedVersion("Unknown version %s" % msvc_version)
  
      for hkroot, key in hkeys:
          try:
              comps = None
              if not key:
                  comps = find_vc_pdir_vswhere(msvc_version)
                  if not comps:
                      debug('find_vc_dir(): no VC found via vswhere for version {}'.format(repr(key)))
                      raise SCons.Util.WinError
              else:
                  if common.is_win64():
                      try:
                          # ordinally at win64, try Wow6432Node first.
                          comps = common.read_reg(root + 'Wow6432Node\\' + key, hkroot)
                      except SCons.Util.WinError as e:
                          # at Microsoft Visual Studio for Python 2.7, value is not in Wow6432Node
                          pass
                  if not comps:
                      # not Win64, or Microsoft Visual Studio for Python 2.7
                      comps = common.read_reg(root + key, hkroot)
          except SCons.Util.WinError as e:
              debug('find_vc_dir(): no VC registry key {}'.format(repr(key)))
          else:
              debug('find_vc_dir(): found VC in registry: {}'.format(comps))
              if os.path.exists(comps):
                  return comps
              else:
                  debug('find_vc_dir(): reg says dir is {}, but it does not exist. (ignoring)'.format(comps))
                  raise MissingConfiguration("registry dir {} not found on the filesystem".format(comps))
      return None
docs: Try to find the product directory for the given
      version.
  
      Note
      ----
      If for some reason the requested version could not be found, an
      exception which inherits from VisualCException will be raised.