gpt4 book ai didi

ruby - 在 Windows 上的 Ruby 中检查文件的版本

转载 作者:数据小太阳 更新时间:2023-10-29 06:43:07 24 4
gpt4 key购买 nike

在 Ruby 中有没有办法找到文件的版本,特别是 .dll 文件?

最佳答案

对于 Windows EXE 和 DLL:

require "Win32API"
FILENAME = "c:/ruby/bin/ruby.exe" #your filename here
s=""
vsize=Win32API.new('version.dll', 'GetFileVersionInfoSize',
['P', 'P'], 'L').call(FILENAME, s)
p vsize
if (vsize > 0)
result = ' '*vsize
Win32API.new('version.dll', 'GetFileVersionInfo',
['P', 'L', 'L', 'P'], 'L').call(FILENAME, 0, vsize, result)
rstring = result.unpack('v*').map{|s| s.chr if s<256}*''
r = /FileVersion..(.*?)\000/.match(rstring)
puts "FileVersion = #{r ? r[1] : '??' }"
else
puts "No Version Info"
end

'unpack'+regexp 部分是 hack,“正确”的方法是 VerQueryValue API,但这应该适用于大多数文件。 (可能在扩展字符集上惨败。)

关于ruby - 在 Windows 上的 Ruby 中检查文件的版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76472/

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