Я использую функцию, которая немного изменена по сравнению с предыдущим примером. Функция берет путь и имя файла и возвращает «Версия продукта»
Function GetProductVersion (sFilePath, sProgram)
Dim FSO,objShell, objFolder, objFolderItem, i
Set FSO = CreateObject("Scripting.FileSystemObject")
If FSO.FileExists(sFilePath & "\" & sProgram) Then
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(sFilePath)
Set objFolderItem = objFolder.ParseName(sProgram)
Dim arrHeaders(300)
For i = 0 To 300
arrHeaders(i) = objFolder.GetDetailsOf(objFolder.Items, i)
'WScript.Echo i &"- " & arrHeaders(i) & ": " & objFolder.GetDetailsOf(objFolderItem, i)
If lcase(arrHeaders(i))= "product version" Then
GetProductVersion= objFolder.GetDetailsOf(objFolderItem, i)
Exit For
End If
Next
End If
End Function
Я обнаружил, что положение атрибутов иногда меняется (не знаю почему) в XP и Vista, поэтому я ищу атрибут «версия продукта» и выхожу из цикла, когда он найден. Закомментированная строка покажет все атрибуты и значение, если доступно