vbscript, чтобы проверить, установлен ли .net 2.0 - PullRequest
3 голосов
/ 09 декабря 2010

Вы можете поделиться vbscript, который проверяет, установлен ли .NET 2.0 на компьютере.

Я выполнил поиск в Интернете, и большинство таких приложений "проверьте, установлен ли .net" простоищите определенные разделы реестра, таким образом игнорируя тот факт, что установка может быть повреждена.

В основном я ищу скрипт, который пытается создать объект .NET (который должен быть обязательно создан - например, System.Object)и если он дает сбой - .NET либо не установлен, либо установка повреждена (таким образом, не лучше, чем вообще не установлен .NET).

Ответы [ 3 ]

2 голосов
/ 20 января 2012

Это также работает и является точной копией веб-сайта 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 голосов
/ 09 декабря 2010

Официальный способ определить, установлена ​​ли конкретная версия .NET Framework, - проверить наличие соответствующего раздела реестра. В этом случае вы ищете этот ключ:

HKLM\SOFTWARE\Microsoft\.NETFramework\Policy\v2.0

Если присутствует значение REG_SZ «50727», то вы знаете, что установлена ​​версия 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, пытаясь создать экземпляр общего объекта Framework, сценарий очень похож. (На самом деле, это даже немного проще, чем доступ к реестру.) Как и раньше, 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, и если это так, вам действительно следует рассмотреть возможность использования первого варианта.

По моему опыту, такие «испорченные» установки Framework встречаются крайне редко, и если вы видите их так часто, как мне кажется, вы можете просто установить нужную версию Framework как само собой разумеющееся. Я не уверен, что возможность создания экземпляра объекта типа System.Object на самом деле является более "истинным" тестом на достоверность установки Framework, чем проверка на наличие ключей или каталогов реестра.

Это было теперь проверено для работы на чистой виртуальной машине Windows XP без установленной .NET Framework. Это правильно сообщает о сбое. На других машинах с установленным .NET Framework он правильно сообщает об успехе.

0 голосов
/ 26 мая 2012

Лучший вариант узнать, правильно ли установлен .NET FRAMEWORK 2, я бы порекомендовал создать скрипт, который будет искать «2 THINGS»;

  1. Проверьте, есть ли RegKey, как показывал 'Cody Grey'.

  2. Я бы написал код, который проверяет, меньше ли NET FRAMEWORK 2 (находится в каталоге Windows), например, 75 МБ (что обычно составляет около 82 -87 МБ), если это так, либо его удаление, либо повреждение .

, сложив эти 2 кода вместе, вы сможете узнать, правильно ли установлен NET FRAMEWORK 2 на компьютере пользователя или нет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...