当前位置:  开发笔记 > 编程语言 > 正文

以编程方式检索Visual Studio安装目录

如何解决《以编程方式检索VisualStudio安装目录》经验,为你挑选了4个好方法。

我知道有一个注册表项指示安装目录,但不记得它是什么.

目前对VS2008安装目录感兴趣,虽然列出其他人以备将来参考也不会有什么坏处.



1> Dim_Ka..:

我使用此方法查找Visual Studio 2010的安装路径:

    private string GetVisualStudioInstallationPath()
    {
        string installationPath = null;
        if (Environment.Is64BitOperatingSystem)
        {
            installationPath = (string)Registry.GetValue(
               "HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\VisualStudio\\10.0\\",
                "InstallDir",
                null);
        }
        else
        {
            installationPath = (string)Registry.GetValue(
       "HKEY_LOCAL_MACHINE\\SOFTWARE  \\Microsoft\\VisualStudio\\10.0\\",
              "InstallDir",
              null);
        }
        return installationPath;

    }


VS2017 Enterpise WIn10中没有InstallDir

2> ZebZiggle..:

我确信还有一个注册表项,但我无法轻易找到它.您也可以使用VS90COMNTOOLS环境变量.



3> Kevin Kibler..:

注册表方法

我建议查询注册表以获取此信息.这给出了实际的安装目录,而不需要组合路径,它也适用于快速版本.这可能是一个重要的区别,具体取决于您需要做什么(例如,模板根据Visual Studio的版本安装到不同的目录).注册表位置如下(请注意,Visual Studio是一个32位程序,将安装到x64计算机上的注册表的32位部分):

Visual Studio:HKLM\SOFTWARE\Microsoft\Visual Studio\Major.Minor:InstallDir

Visual C#Express:HKLM\SOFTWARE\Microsoft\VCSExpress\Major.Minor:InstallDir

Visual Basic Express:HKLM\SOFTWARE\Microsoft\VBExpress\Major.Minor:InstallDir

Visual C++ Express:HKLM\SOFTWARE\Microsoft\VCExpress\Major.Minor:InstallDir

其中Major是主要版本号,Minor是次要版本号,冒号后面的文本是注册表值的名称.例如,Visual Studio 2008 Professional的安装目录将位于InstallLir值中的HKLM\SOFTWARE\Microsoft\Visual Studio\9.0密钥中.

这是一个代码示例,它打印几个版本的Visual Studio和Visual C#Express的安装目录:

string visualStudioRegistryKeyPath = @"SOFTWARE\Microsoft\VisualStudio";
string visualCSharpExpressRegistryKeyPath = @"SOFTWARE\Microsoft\VCSExpress";

List vsVersions = new List() { new Version("10.0"), new Version("9.0"), new Version("8.0") };
foreach (var version in vsVersions)
{
    foreach (var isExpress in new bool[] { false, true })
    {
        RegistryKey registryBase32 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32);
        RegistryKey vsVersionRegistryKey = registryBase32.OpenSubKey(
            string.Format(@"{0}\{1}.{2}", (isExpress) ? visualCSharpExpressRegistryKeyPath : visualStudioRegistryKeyPath, version.Major, version.Minor));
        if (vsVersionRegistryKey == null) { continue; }
        Console.WriteLine(vsVersionRegistryKey.GetValue("InstallDir", string.Empty).ToString());
    }

环境变量法

Visual Studio的非快速版本也编写了一个可以检查的环境变量,但它给出了常用工具目录的位置,而不是安装目录,因此您必须进行一些路径组合.环境变量的格式为VS*COMNTOOLS,其中*是主要版本号和次要版本号.例如,Visual Studio 2010的环境变量是VS100COMNTOOLS,并包含类似C:\ Program Files\Microsoft Visual Studio 10.0\Common7\Tools的值.

下面是一些示例代码,用于为多个版本的Visual Studio打印环境变量:

List vsVersions = new List() { new Version("10.0"), new Version("9.0"), new Version("8.0") };
foreach (var version in vsVersions)
{
    Console.WriteLine(Path.Combine(Environment.GetEnvironmentVariable(string.Format("VS{0}{1}COMNTOOLS", version.Major, version.Minor)), @"..\IDE"));
}



4> Emperor XLII..:

环境:感谢Zeb和Sam提出的VS*COMNTOOLS环境变量建议.要在PowerShell中访问IDE:

$vs = Join-Path $env:VS90COMNTOOLS '..\IDE\devenv.exe'

注册表:看起来像注册表位置HKLM\Software\Microsoft\VisualStudio,每个安装都有特定于版本的子项.在PowerShell中:

$vsRegPath = 'HKLM:\Software\Microsoft\VisualStudio\9.0'
$vs = (Get-ItemProperty $vsRegPath).InstallDir + 'devenv.exe'

[改编自此处 ]

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有