我已经创建了一个脚本来检测通过注册表安装的.Net框架。该条件应特别检测3.5或更高版本,并继续这一过程。但是,使用注册表似乎是不可能的。每次安装新版本时,您都必须搜索并输入注册表,或者修改脚本以使其正常工作。
然后我在谷歌上搜索,它可以通过WMI完成,这似乎是可行的。我已经修改了脚本,以灵活,即使有新安装的.net框架高于3.5,它将自动检测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函数FrameworkCheck
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发布于 2015-03-19 14:44:26
相反,您可能希望有一个函数来获取最大框架版本,然后更改调用代码以查看它是否返回最低要求的>=版本(我还没有检查这个版本的语法):
Function MaxFrameworkVersionCheck()
Dim strComputer, objWMIService, colItems, strVar, objItem, maxVersion
maxVersion = 0
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
WriteLog "Detected Framework Version: " & objItem.Version & " - " & objItem.Name
If objItem.Version > maxVersion Then
maxVersion = objItem.Version
End If
Next
MaxFrameworkVersionCheck = maxVersion
End Function发布于 2015-03-20 07:42:14
您还可以使用Environment.Version来检查运行时版本,而不是注册表。请参阅此文档以获得更多详细信息:b
https://stackoverflow.com/questions/29147427
复制相似问题