gpt4 book ai didi

windows - 如何使用 cmd/batch 获取 Windows 可执行文件的 "Original Filename"详细信息字段

转载 作者:可可西里 更新时间:2023-11-01 09:27:45 26 4
gpt4 key购买 nike

在windows上,MZ/PE可执行文件通常有一个名为“原始文件名”的属性,用于描述创建可执行文件时分配给它的原始文件名。

Windows 用户可以从文件“属性”窗口(通过右键单击文件并选择“属性”打开)的“详细信息”选项卡中读取它。

我发现很多其他问题都在讨论“原始文件名,所以为了清楚起见,我说的是这个字段,对于 mspaint.exe 文件:

In memory of it's announced death, I hope the gesture will be appreciated :)

但是,我想使用批处理文件或 Windows 命令行(请不要使用 powershell!)访问/读取此属性(并可能编辑它)。

谢谢!

最佳答案

Windows 没有内置的命令行工具来从 PE 文件中读取版本信息。

您可以使用资源编辑器,例如 Resource Hacker导出信息,但您仍然需要解析导出的文件。

在 WinVista+(和安装了桌面搜索的 WinXP)上,您可以使用 shell 属性系统(与文件属性对话框使用的相同 API)读取信息。

Microsoft 开发人员创建了一个名为 shellproperty.exe 的免费工具您可以使用它来读取 System.OriginalFileName 属性。

使用 Windows 脚本宿主,如果您使用 ShellFolderItem.ExtendedProperty,也可以访问属性系统。方法。

最后,WSH 脚本可以与批处理文件合并以创建工作 polyglot零外部依赖:

@if (1 == 0) @end /*
@cscript.exe /E:jscript /nologo "%~f0" %*
@goto :eof
*/

var objShell = new ActiveXObject("shell.application");
var objFolder2, ssfSysDir = 0x25, propVal = "";
objFolder2 = objShell.NameSpace(ssfSysDir);
if (objFolder2 != null)
{
var objFolderItem;
objFolderItem = objFolder2.ParseName("mspaint.exe");
if (objFolderItem != null)
{
propVal = objFolderItem.ExtendedProperty("{0CEF7D53-FA64-11D1-A203-0000F81FEDEE},6");
WScript.Echo(propVal);
}
}

关于windows - 如何使用 cmd/batch 获取 Windows 可执行文件的 "Original Filename"详细信息字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45959410/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com