gpt4 book ai didi

javascript - 使用 jscript 检测 exe 的版本和公司名称

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:38:33 25 4
gpt4 key购买 nike

我知道如何使用 jscript 检索 exe 的版本,但我找不到任何方法来检索其他信息,如“公司”、“内部名称”或“产品名称”。

function version_of( file_name ) 
{
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f;
try {
f = fso.GetFile( file_name )
} catch( e ) {
throw new Error( e.number, "Error retrieving version of file ``" + file_name + "'': " + e.description );
}
var v = fso.GetFileVersion( f );
if ( !v ) {
throw new Error( 1, "File ``" + file_name + "'' has not got a version" );
}
return v;
}

WScript.Echo( version_of( "c:\\windows\\system32\\winver.exe" ) );

也许我会编写自己的 COM 对象来完成这项工作...

最佳答案

可以使用 GetDetailsOf 在脚本中获取扩展文件属性,例如公司名称或产品名称Shell的方法Folder目的。该方法采用与扩展属性关联的从零开始的索引号,并将属性值作为字符串返回。通常,GetDetailsOf 可用于检索可在详细 Shell View (查看 -> 选择详细信息)中显示的任何类型的信息。参见 Retrieving Extended File Properties .

唯一的问题是不同的 Windows 版本提供不同的扩展文件属性集。例如,Windows XP 有 34 个文件属性,Windows Vista — 266,Windows 7 — 284。不仅属性索引可以不同,而且属性名称(Windows XP 中的Duration = Length 在 Windows Vista 中),这非常令人困惑。有关可用文件属性及其索引号的完整列表,请参阅 this page或者使用这样的脚本:

var oShell = new ActiveXObject("Shell.Application");
var oFolder = oShell.Namespace("C:");

for (var i = 0; i < 300 /* some large number*/; i++)
WScript.Echo(i + " " + oFolder.GetDetailsOf(null, i));


不管怎样,下面是在 Windows Vista 上执行任务的示例代码。我找不到 Internal Name 属性(可能没有正确搜索),所以包含了 File VersionProduct Version:

var COMPANY_NAME    = 33;
var FILE_VERSION = 145;
var PRODUCT_NAME = 251;
var PRODUCT_VERSION = 252;

var oShell = new ActiveXObject("Shell.Application");
var oFolder = oShell.Namespace("C:\\Windows");
var oFile = oFolder.ParseName("notepad.exe");

WScript.Echo("Company name: " + oFolder.GetDetailsOf(oFile, COMPANY_NAME));
WScript.Echo("Product name: " + oFolder.GetDetailsOf(oFile, PRODUCT_NAME));
WScript.Echo("File version: " + oFolder.GetDetailsOf(oFile, FILE_VERSION));
WScript.Echo("Product version: " + oFolder.GetDetailsOf(oFile, PRODUCT_VERSION));

请注意,您可以使用 GetDetailsOf(null, property_index) 获取特定于语言环境的属性名称(这在非英语 Windows 版本上很有用):

WScript.Echo(oFolder.GetDetailsOf(null, COMPANY_NAME) + ": " + oFolder.GetDetailsOf(oFile, COMPANY_NAME));

关于javascript - 使用 jscript 检测 exe 的版本和公司名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1674134/

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