用于检查是否已安装.net 2.0的vbscript

时间:2010-12-09 03:36:51

标签: .net vbscript installation

是否可以共享一个vbscript,用于检查计算机上是否安装了.NET 2.0。

我在网上进行了搜索,大多数此类“检查.net是否已安装”应用程序只是查找特定的注册表项,因此忽略了安装可能已损坏的事实。

基本上我正在寻找尝试创建.NET对象的脚本(应该可以创建它 - 例如System.Object),如果它失败了 - .NET既没有安装也没有安装被破坏(因此没有比没有安装.NET。)

3 个答案:

答案 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件事”的脚本;

  1. 检查RegKey是否仍然存在,如“Cody Gray”所示。

  2. 我会编写一个代码来检查NET FRAMEWORK 2(位于Windows目录中)是否小于例如75 MB(通常大约为82 -87 MB),如果超过其已卸载或已损坏

  3. 通过将这两个代码放在一起,您将能够知道NET FRAMEWORK 2是否正确安装在用户计算机上