我正在创建一个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?
答案 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
。