有没有办法在给定路径的情况下为可执行文件找到“友好”名称?

时间:2013-08-26 04:01:21

标签: .net registry

我正在创建一个UI,其中包含可在自己的线程中启动大量.EXE文件的按钮。

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

举个例子,我的路径可能是:

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

但在我的用户界面中,我想显示一个带有“Word”的按钮。

我注意到在注册表中,许多应用程序将FriendlyAppName存储在注册表区域中,我可以按如下方式访问:

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

但对于许多应用程序,该名称不存在。有没有人知道是否有更好的方法来获得FriendlyAppName?

1 个答案:

答案 0 :(得分:2)

您可以使用FileVersionInfo类的FileDescription属性。

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

打印:

  

Microsoft Word

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