<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; WSH: получение версии установленного .NET Framework]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=3769</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=3769&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «WSH: получение версии установленного .NET Framework».]]></description>
		<lastBuildDate>Sat, 28 Nov 2009 09:16:12 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: WSH: получение версии установленного .NET Framework]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=31102#p31102</link>
			<description><![CDATA[<p>Еще один вариант определения версии установленного .NET Framework, через разбор свойства userAgent объекта navigator (для Internet Explorer):<br />Language: JScript.</p><div class="codebox"><pre><code>//--------------------------------------------------------------------
// JScript: Получение версии установленного .NET Framework
//--------------------------------------------------------------------
var initObj=new ActiveXObject(&#039;htmlfile&#039;)
initObj.open()

var rexp=/(\.NET.[^;)]+)/ig
var cInfo=initObj.parentWindow.clientInformation[&#039;userAgent&#039;]    //Вариант 1
//var cInfo=initObj.parentWindow.navigator[&#039;userAgent&#039;]        //Вариант 2

initObj.close()

    if (!rexp.test(cInfo))
    {
        WScript.Echo(&#039;.NET Framework не установлен.&#039;)
    }
    else
    {
        strVer=&#039;&#039;
        m=cInfo.match(rexp)
        for (i=0;i&lt;m.length;i++){strVer=strVer+&#039;\n&#039;+m[i]}
        WScript.Echo(&#039;Версия установленного .NET Framework: \n&#039;+strVer)
    }


WScript.Quit()
//--------------------------------------------------------------------</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Poltergeyst)]]></author>
			<pubDate>Sat, 28 Nov 2009 09:16:12 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=31102#p31102</guid>
		</item>
		<item>
			<title><![CDATA[WSH: получение версии установленного .NET Framework]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=29426#p29426</link>
			<description><![CDATA[<p>В статье <a href="http://sazonov.spaces.live.com/blog/cns!C80884C5BEC6A15D!212.entry">PowerShell – контроль окружения</a> с блога Ильи Сазонова предлагается для этого пользовать ветвь реестра «HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent\Post Platform», где параметры «.NET CLR…» суть версии установленных паков платформы .NET Framework:<br /></p><div class="quotebox"><cite>Илья Сазонов пишет:</cite><blockquote><p>Другое дело библиотеки .NET Framework и их версия. Я нашел вот такой несколько странный способ выяснить какой «донет» установлен на компьютере:<br />…<br />Несмотря на странность этого метода, он работает! Изначально метод рассчитан на извещение браузером web-сервера какая версия «дотнет» установлена на клиенте, для того чтобы сервер мог корректно сгенерировать код страницы для клиента <em>[сие может быть видно в «User-Agent:» — alexii]</em>. Но это не мешает нам использовать его в PowerShell для контроля окружения.</p></blockquote></div><p>Сам скрипт:<br /></p><div class="codebox"><pre><code>Option Explicit

Const HKEY_LOCAL_MACHINE = &amp;H80000002
Const REG_SZ             = 1

Const strTest = &quot;.NET CLR &quot;


Dim objSWbemServicesEx

Dim strComputer
Dim arrValueNames, arrValueTypes
Dim i


strComputer = &quot;.&quot;

Set objSWbemServicesEx = GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\&quot; &amp; strComputer &amp; &quot;\root\Default&quot;)

If objSWbemServicesEx.Get(&quot;StdRegProv&quot;).EnumValues( _
    HKEY_LOCAL_MACHINE, _
    &quot;SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent\Post Platform&quot;, _
    arrValueNames, _
    arrValueTypes) = 0 Then
    
    For i = LBound(arrValueNames) To UBound(arrValueNames)
        If arrValueTypes(i) = REG_SZ Then
            If Left(arrValueNames(i), Len(strTest)) = strTest Then
                WScript.Echo Mid(arrValueNames(i), Len(strTest) + 1)
            End If
        End If
    Next
End If

Set objSWbemServicesEx = Nothing

WScript.Quit 0</code></pre></div><p>Возможный результат:<br /></p><div class="quotebox"><blockquote><p>1.1.4322<br />2.0.50727<br />3.0.04506.30<br />3.0.04506.648<br />3.0.4506.2152<br />3.5.30729</p></blockquote></div><p>Отдельное спасибо <strong>The gray Cardinal</strong>.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Mon, 19 Oct 2009 07:48:24 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=29426#p29426</guid>
		</item>
	</channel>
</rss>
