2015-07-13 4 views
0

Мне нужно найти версию программного обеспечения, установленного на моей машине. Код для этого:Версия установленного программного обеспечения

Const HKLM = &H80000002 'HKEY_LOCAL_MACHINE 
strComputer = "." 
strKey = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" 
strkey1= "SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\" 
strEntry1a = "DisplayName" 
strEntry1b = "QuietDisplayName" 
strEntry3 = "VersionMajor" 
strEntry4 = "VersionMinor" 

'to get result in tabular format in html 
strResult = "<body><table border=1 cellpadding=5 style=margin-left:50px;><tr><th>Sl No.</th><th>Softwares</th><th>Version</th></tr>" 
Dim cnt 
cnt=0 

'getting the list from win32:_64 bit installed softwares 
Set objReg = GetObject("winmgmts://" & strComputer & _ 
"/root/default:StdRegProv") 
objReg.EnumKey HKLM, strKey, arrSubkeys 

For Each strSubkey In arrSubkeys 
    intRet1 = objReg.GetStringValue(HKLM, strKey & strSubkey, _ 
    strEntry1a, strValue1) 
    If intRet1 <> 0 Then 
     objReg.GetStringValue HKLM, strKey & strSubkey, _ 
     strEntry1b, strValue1 
    End If 
    objReg.GetDWORDValue HKLM, strKey & strSubkey, strEntry3, intValue3 
    objReg.GetDWORDValue HKLM, strKey & strSubkey, strEntry4, intValue4 
    If strValue1 <> "" Then 
     'to check the duplicates 
     If InStr(strResult,strValue1 & VbCrLf & "</td>")=0 Then 
      cnt=cnt+1 
      strResult = strResult & "<tr><td>"&cnt & "</td><td>" & strValue1 & VbCrLf & "</td><td>" &intValue3 & "." &intValue4 & "</td></tr>" 
     End If 
    End If 
Next 

Но проблема в том, что он не дает полной версии программного обеспечения. Например: для vlc 2.7.1 его печать не печатает, а для других - его половину печати, т. Е. 8.1 вместо 8.1.61001. Как распечатать полную версию.

ответ

1

Прочитать строку DisplayVersion вместо значений DWORD VersionMajor и VersionMinor.

objReg.GetStringValue HKLM, strKey & strSubkey, "DisplayVersion", version 
+0

Его работа. Спасибо :) Но одна проблема, ее не печатать версию нескольких программ, таких как MATLAB, vlc, 7-zip и т. Д. Что может быть причиной этого. – user387600

+0

@ user387600 Код, который вы отправили, не проверяет установки для каждого пользователя, а в 64-битных системах не проверяется 32-разрядная ветвь реестра ('strKey1'). –

Смежные вопросы