是否可以共享一个vbscript,用于检查计算机上是否安装了.NET 2.0。
我在网上进行了搜索,大多数此类“检查.net是否已安装”应用程序只是查找特定的注册表项,因此忽略了安装可能已损坏的事实。
基本上我正在寻找尝试创建.NET对象的脚本(应该可以创建它 - 例如System.Object),如果它失败了 - .NET既没有安装也没有安装被破坏(因此没有比没有安装.NET。)
答案 0 :(得分:2)
检测是否安装了特定版本的.NET Framework的官方方法是检查是否存在相应的注册表项。在这种情况下,您正在寻找此密钥:
HKLM\SOFTWARE\Microsoft\.NETFramework\Policy\v2.0
如果存在REG_SZ值“50727”,那么您知道已安装Framework 2.0版。
那么,你如何在VBScript中做到这一点?这是一个可以做到这一点的小脚本:
Option Explicit
Dim oShell
Dim value
''#If the key isn't there when we try to read it, an error will be generated
''# that we will later test for, so we want to automatically resume execution.
On Error Resume Next
''#Try reading the registry value
Set oShell = CreateObject("WScript.Shell")
value = oShell.RegRead("HKLM\SOFTWARE\Microsoft\.NETFramework\Policy\v2.0\50727")
''#Catch the error
If Err.Number = 0 Then
''#Error code 0 indicates success
MsgBox("Version 2.0 of the .NET Framework is installed.")
Else
''#Any other error code indicates failure
MsgBox("Version 2.0 of the .NET Framework is NOT installed.")
End If
如果您想将此检查集成到现有 VBScript中,我建议您将其转换为返回Boolean
值的函数(而不是显示消息框)取决于是否安装了正确版本的.NET Framework。然后,您可以在脚本中调用此函数。 注意:如果您选择这条路线,请确保在功能结束时关闭错误处理(或至少返回更合适的样式)!除非您在代码中稍后明确处理错误,否则您不希望使用On Error Resume Next
。
On Error Goto 0 ''#Turn "On Error Resume Next" back off!
编辑:如果您确信要通过尝试实例化公共框架对象来确定.NET安装的有效性,则脚本非常相似。 (实际上,它甚至比进行注册表访问更简单。)和以前一样,使用CreateObject
,但这次要实例化基类System.Object
的对象:
On Error Resume Next
Dim testObj
Set testObj = CreateObject("System.Object")
If Err.Number = 0 Then
MsgBox("Success")
Else
MsgBox("Failure")
End If
但是,这将不告诉您安装了.NET Framework的版本。此测试将通过任何版本,包括1.1,2.0,4.0,未来版本等。您的问题似乎表明版本2.0的要求,如果是这种情况,您真的应该考虑使用第一个选项。
我的经验是,框架的这种“损坏”安装非常罕见,如果您经常看到它们,我们可能会考虑安装适当版本的框架作为当然。我不相信能够实例化System.Object
类型的对象实际上是对框架安装有效性的“真实”测试,而不是检查是否存在注册表项或目录。
现在已经过测试,可以在没有安装.NET Framework的干净Windows XP虚拟机上运行。它正确报告失败。在安装了.NET Framework的其他计算机上,它会正确报告成功。
答案 1 :(得分:2)
这也是有效的,并且是MSDN网站上关于测试.net安装的推荐方法的精确副本。
网站 - http://support.microsoft.com/kb/318785/en-us
''official MSDN verison 2.0
value = oShell.RegRead("HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\Version")
''#Catch the error
If Err.Number = 0 Then
''#Error code 0 indicates success
MsgBox("Version 2.0 of the official .NET Framework is installed.")
Else
''#Any other error code indicates failure
MsgBox("Version 2.0 of the official .NET Framework is NOT installed.")
End If
答案 2 :(得分:0)
了解.NET FRAMEWORK 2是否安装正确的最佳选择我建议制作一个寻找“2件事”的脚本;
检查RegKey是否仍然存在,如“Cody Gray”所示。
我会编写一个代码来检查NET FRAMEWORK 2(位于Windows目录中)是否小于例如75 MB(通常大约为82 -87 MB),如果超过其已卸载或已损坏
通过将这两个代码放在一起,您将能够知道NET FRAMEWORK 2是否正确安装在用户计算机上