【问题标题】:Get FileDescription (ProgramName) from .exe从 .exe 获取 FileDescription (ProgramName)
【发布时间】:2012-09-10 07:41:08
【问题描述】:

我正在为我在 Eclipse(使用 Java)中的开发工作开发一个活动跟踪器。我现在有了程序的路径和我在其中花费的持续时间。

例如:7min C:\Program Files (x86)\Internet Explorer\iexplore.exe10min C:\Program Files\Microsoft Office\Office14\OUTLOOK.EXE

我现在想知道程序的名称。在 C# 中,我是这样理解的:

System.Diagnostics.FileVersionInfo versionInfo = System.Diagnostics.FileVersionInfo.GetVersionInfo(file);
return (versionInfo.FileDescription == string.Empty) ? null : versionInfo.FileDescription;

不幸的是,我在 Java 中没有发现这样的方法,我不确定这是否可能?

谢谢!

编辑:我也阅读了这个post 和接受的答案,但无法获得 FileDescription...

【问题讨论】:

  • 我在 StackOverflow 上找到了一个很好的提示:stackoverflow.com/questions/8052862/… 这样我就可以得到文件版本。不幸的是,我无法使其适应我对文件描述的需求。

标签: c# java process version


【解决方案1】:

我不知道 Java 中有这样的 API。但是,您可以执行以下操作:

  1. 使用返回程序名称的所需方法创建 C# 项目。
  2. 将此项目导出到 DLL。
  3. 在您的 java 代码中,您可以使用 JNI 从您的 DLL 项目中调用本机代码。您可以查看以下示例:SUN JNI ExampleMaking Native Windows API calls from within a Java Application

(我建议你考虑一下你是否绝对需要这个描述。) 祝你好运!

【讨论】:

  • 感谢@aviad 的帖子。如果我刚刚发现的方式(但有一点问题见上文)不起作用,我会尝试这种方式。不幸的是,我发现没有其他可能向用户显示程序名称而不是这个描述......
  • 只是在黑暗中试一试:构建自己的字典,从 iexplore.exe->Internet Explorer 等映射。尽可能多地查找可执行文件,我相信你会达到 90%很快就会覆盖
  • 这也是我的想法...谢谢。
【解决方案2】:

我花了很长时间才找到这个,但我终于能够拼凑出这个内联脚本: (get-command *.exe).fileversioninfo.filedescription 现在我使用了*.exe.filedescription,因为我试图返回目录中每个exe 的美化文件名,但您可以使用任何可用的变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-24
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    相关资源
    最近更新 更多