0

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

我搜索了很多地方,有些问题看起来很相似,但它们并没有给我我所要求的。

更具体地说,现在我想为 Visual Studio 执行此操作,即我有一个 WPF 应用程序,它与 Visual Studio 一起运行,并且鉴于我知道 Visual Studio 的进程名称,即“devenv”,我怎么能得到从 WPF 应用程序安装在我的机器上的 Visual Studio 的版本信息?这只是一个示例,不要假设 Visual Studio 有任何特定的内容。在一般情况下,我们会运行一个应用程序,我们知道进程名称并想要它的安装版本。

您能否提供执行此操作的 C# 代码?

4

4 回答 4

4

这会很简单。所有类型的系统相关信息都将出现在注册表中。(ie) 如果你打开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++;
            }
于 2013-07-03T10:32:43.883 回答
2
Process.GetProcessesByName("DevEnv")[0].Modules[0].FileVersionInfo
于 2013-07-06T18:14:37.410 回答
0
Version version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;

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

于 2013-07-02T11:27:41.573 回答
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)
于 2013-12-17T19:07:39.677 回答