以编程方式检索已安装应用程序的版本

时间:2013-07-02 09:42:38

标签: c# visual-studio version

我想以编程方式检索已安装的应用程序(当前正在运行)的版本,其中我有正在运行的进程的名称。如果可能的话,也可以检索安装目录,但这是可选的。

我在很多地方搜索过,有些问题看起来很相似,但他们没有给我我要求的东西。

更具体一点,现在我想为Visual Studio做这个,即我有一个WPF应用程序,它与Visual Studio&鉴于我知道Visual Studio的进程名称即“devenv”,如何从WPF应用程序获取安装在我的机器上的Visual Studio的版本信息?这只是一个例子,不要假设Visual Studio特有的东西。在一般情况下,我们有一个运行的应用程序,我们知道它的进程名称&想要它的安装版本。

请你提供C#代码吗?

4 个答案:

答案 0 :(得分:4)

这很简单。所有类型的系统相关信息都将出现在注册表中。 (即)如果您打开 regedit ,您可能会找到各种HKEY。现在,请导航到以下位置。

“HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall”

您可以在此位置找到许多文件夹,其中将加密文件夹的名称。这些文件夹指示当前计算机中已安装的应用程序。

在每个文件夹中都会有许多键值和数据值。在那你可以找到DisplayName和DisplayVersion。所以这个DisplayVersion为您提供了应用程序的实际版本。

那么,如何通过代码实现这一目标呢?

 RegistryKey rKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall");

            List<string> insApplication = new List<string>();

            if (rKey != null && rKey.SubKeyCount > 0)
            {
                insApplication = rKey.GetSubKeyNames().ToList();
            }

            int i = 0;

            string version = "";

            foreach (string appName in insApplication)
            {

                RegistryKey finalKey = rKey.OpenSubKey(insApplication[i]);

                string installedApp = finalKey.GetValue("DisplayName").ToString();

                if (installedApp == "Google Chrome")
                {
                    version = finalKey.GetValue("DisplayVersion").ToString();
                    return;
                }
                i++;
            }

答案 1 :(得分:1)

Process.GetProcessesByName("DevEnv")[0].Modules[0].FileVersionInfo

答案 2 :(得分:0)

Version version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;

这将获得正在执行的程序集的版本。

答案 3 :(得分:0)

Imports EnvDTE    
Imports EnvDTE80    
Imports EnvDTE90

Public DTE As EnvDTE.DTE
Dim version As String

DTE = System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.9.0")    
version = DTE.Version    
MsgBox("The visual studio version is {0}", version)