Windows沒有內置的命令行工具閱讀中的版本從PE文件形成。
您可以使用像Resource Hacker這樣的資源編輯器來導出信息,但仍然需要解析導出的文件。
在WinVista +(以及安裝了桌面搜索的WinXP)上,您可以使用shell屬性系統(與文件屬性對話框使用相同的API)讀取信息。
Microsoft開發人員創建了一個名爲shellproperty.exe的免費工具,您可以使用該工具閱讀System.OriginalFileName
屬性。
使用Windows Script Host,如果使用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);
}
}
沒有這樣做只是使用批處理文件中沒有內置的方式。信息存儲在版本資源的「StringFileInfo」部分,並且該字段被命名爲「OriginalFilename」。如果你是谷歌的「命令行版本資源編輯器」,你應該能夠找到適當的工具。 – zett42
謝謝你的回覆,@ zett42! – NirIzr