【发布时间】:2015-03-19 14:36:48
【问题描述】:
我创建了一个脚本,它检测通过注册表安装的已安装 .Net Framework。该条件应专门检测 3.5 或更高版本并继续该过程。但是,使用注册表似乎是不可能的。每次安装新版本时,您都必须搜索并输入注册表或修改脚本才能使其正常工作。
然后我在谷歌上搜索它可以通过 WMI 完成,这似乎可行。我已将脚本修改为灵活,即使新安装了高于 3.5 的 .net 框架,它也会自动检测安装的 3.5 或更高版本。不幸的是,如果脚本检测到有较低版本或未安装 .net 框架,则一种情况不起作用,脚本应该退出并且不会继续该过程。
WriteLog "Checking if there is .Net Framework 4.5, .Net Framework 4.0 and .Net Framework 3.5 installed on the machine.."
If ((RegValueExists("HKLM\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\UNINSTALL\{8E34682C-8118-31F1-BC4C-98CD9675E1C2}\")) AND (RegValueExists("HKLM\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\UNINSTALL\{F5B09CFD-F0B2-36AF-8DF4-1DF6B63FC7B4}\"))) Then
WriteLog"Framework 4 detected on system. "
WriteLog "Proceeding with installation..."
ElseIf FrameworkCheck("3.5") Then
'Proceed with installation
End If
功能框架检查
Function FrameworkCheck(strVersion)
Dim strComputer, objWMIService, colItems, strVar, objItem
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select Name, Version from Win32_Product Where Name Like 'Microsoft .NET Framework%'")
For Each objItem in colItems
If objItem.Version => strVersion Then
WriteLog "Detected Framework Version: " & objItem.Version & " - " & objItem.Name
WriteLog "Proceeding with installation..."
ElseIf objItem.Version <> 0 Then
WriteLog "NOK-Framework 3.5 or later not detected on system. Installation not possible. Please check basic client installation"
WScript.Quit(-1)
End If
Next
End Function
【问题讨论】:
标签: .net vbscript detection wmi-query