2013-08-26 24 views
0

我正在创建一个具有按钮的UI,这些按钮可以在自己的线程中启动许多.EXE文件。有没有办法找到一个给定路径的可执行文件的'友好'名字?

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

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

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

但在我的UI我想与它“字”来显示一个按钮。

我注意到,在注册表中的许多应用程序存储在FriendlyAppName,我可以作为访问注册表的区域如下:

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

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

回答

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

+0

谢谢,这比给我发现的注册表的一部分提供了更好的结果:) –

相关问题