0

我正在创建一个 UI,该 UI 具有在它们自己的线程中启动多个 .EXE 文件的按钮。

我知道 .EXE 文件的路径,但我想显示一个友好的应用程序名称,而不是可执行文件的文件名。引用的大多数应用程序都是大牌应用程序,例如 Microsoft Word 或 Skype;不仅在内部 EXE 文件中。

例如,我的路径可能是:

"C:\Program Files\Microsoft Office\Office15\WINWORD.EXE"

但是在我的 UI 中,我想显示一个带有“Word”的按钮。

我注意到在注册表中,许多应用程序都存储了一个FriendlyAppName在我可以访问的注册表区域中,如下所示:

command.Text = Microsoft.Win32.Registry.GetValue
    (
    "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Applications\" + 
    IO.Path.GetFileName(path),
    "FriendlyAppName",
    IO.Path.GetFileNameWithoutExtension(path)
    )

但是对于许多应用程序来说,这个名字并不存在。有谁知道是否有更好的方法来获取 FriendlyAppName?

4

1 回答 1

2

您可以使用类的FileDescription属性FileVersionInfo

var info = FileVersionInfo.GetVersionInfo(
               @"C:\Program Files (x86)\Microsoft Office\Office14\winword.exe");
Console.WriteLine(info.FileDescription);

印刷:

微软Word

您可能认为该ProductName属性更有意义,但如果应用程序属于某个套件,ProductName则将持有该套件的名称。例如,在 Word 的情况下,它会说Microsoft Office.

于 2013-08-26T04:46:31.007 回答