Как узнать, установлен ли .NET 3.5 SP1?

Как я могу узнать, установлен ли SP1 на сервере с .NET 3.5?


person Guy    schedule 13.10.2008    source источник


Ответы (7)


Используйте «Установка и удаление программ» из Панели управления.

person rp.    schedule 13.10.2008
comment
Иди разберись. Позже я подумал, что пропустил программный указатель на ваш вопрос, Гай. - person rp.; 11.05.2009

Посмотрите на HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5\. Одно из них должно быть правдой:

  • Значение Version в этом ключе должно быть 3.5.30729.01.
  • Или значение SP в том же ключе должно быть 1.

В C # (взято из первого комментария) вы можете сделать что-то в этом роде:

const string name = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5";
RegistryKey subKey = Registry.LocalMachine.OpenSubKey(name);
var version = subKey.GetValue("Version").ToString();
var servicePack = subKey.GetValue("SP").ToString();
person Ray    schedule 13.10.2008
comment
const string name = @SOFTWARE \ Microsoft \ NET Framework Setup \ NDP \ v3.5; RegistryKey subKey = Registry.LocalMachine.OpenSubKey (имя); var version = subKey.GetValue (Версия) .ToString (); var servicePack = subKey.GetValue (SP) .ToString (); - person Chris Craft; 06.05.2009
comment
На моей машине Version - это 3.5.30729.5420, а SP - это 1 - person Kevin Smyth; 26.07.2013
comment
В командной строке: reg query "HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5" /V Version reg query "HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5" /V SP - person Kevin Smyth; 26.07.2013
comment
Возникнет проблема: если у пользователя не установлена ​​.NET, как ваша программа, написанная с .NET, запускается, чтобы определить, установлена ​​ли .NET? - person zwcloud; 20.09.2019

Вы можете перейти на SmallestDotNet, используя IE с сервера. Это сообщит вам версию, а также предоставит ссылку для загрузки, если вы устарели.

person Andy May    schedule 13.10.2008
comment
Сообщает только самую высокую версию, например если у вас есть 4, он не скажет вам, есть ли у вас также 3.5 sp 1 - person codeulike; 05.02.2013

Я зашел на эту страницу, пытаясь выяснить, как определить версии фреймворка, установленные на сервере без доступа к удаленному рабочему столу или реестру, поэтому ответ Дэнни V сработал для меня.

string path = System.Environment.SystemDirectory;
path = path.Substring( 0, path.LastIndexOf('\\') );
path = Path.Combine( path, "Microsoft.NET" );
// C:\WINDOWS\Microsoft.NET\

string[] versions = new string[]{
    "Framework\\v1.0.3705",
    "Framework64\\v1.0.3705",
    "Framework\\v1.1.4322",
    "Framework64\\v1.1.4322",
    "Framework\\v2.0.50727",
    "Framework64\\v2.0.50727",
    "Framework\\v3.0",
    "Framework64\\v3.0",
    "Framework\\v3.5",
    "Framework64\\v3.5",
    "Framework\\v3.5\\Microsoft .NET Framework 3.5 SP1",
    "Framework64\\v3.5\\Microsoft .NET Framework 3.5 SP1",
    "Framework\\v4.0",
    "Framework64\\v4.0"
};

foreach( string version in versions )
{
    string versionPath = Path.Combine( path, version );

    DirectoryInfo dir = new DirectoryInfo( versionPath );
    if( dir.Exists )
    {
        Response.Output.Write( "{0}<br/>", version );
    }
}
person Matt    schedule 30.04.2010
comment
Сработало как положено у меня. Просто создал новый проект веб-сайта, добавил код и разместил его в общей папке, а затем запросил страницу. - person Kris van der Mast; 21.06.2010

Взгляните на эту статью, в которой показаны ключи реестра, которые нужно искать. и предоставляет библиотеку .NET, которая сделает это за вас.

Во-первых, вы должны определить, установлена ​​ли .NET 3.5, посмотрев на HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v3.5 \ Install, который является значением DWORD. Если это значение присутствует и установлено равным 1, то эта версия Framework установлена.

Посмотрите на HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v3.5 \ SP, который представляет собой значение DWORD, которое указывает уровень пакета обновления (где 0 - это отсутствие пакета обновления).

Чтобы быть правым, вам действительно нужно сначала установить .NET Fx 2.0 и .NET Fx 3.0, а затем проверить, установлен ли .NET 3.5. Если все три верны, вы можете проверить уровень пакета обновления.

person Scott Dorman    schedule 13.10.2008
comment
ссылка на статью изменена, это новое местоположение: codeproject.com/KB/dotnet/ frameworkversiondetection.aspx - person Drake; 02.07.2009

Проверьте, существует ли следующий каталог:

На 64-битных машинах:% SYSTEMROOT% \ Microsoft.NET \ Framework64 \ v3.5 \ Microsoft .NET Framework 3.5 SP1 \

На 32-битных машинах:% SYSTEMROOT% \ Microsoft.NET \ Framework \ v3.5 \ Microsoft .NET Framework 3.5 SP1 \

Где% SYSTEMROOT% - это переменная среды SYSTEMROOT (например, C: \ Windows).

person Danny Varod    schedule 03.03.2010

Предполагая, что везде присутствует имя «Microsoft .NET Framework 3.5 SP1», вы можете использовать это:

string uninstallKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(uninstallKey))
{
    return rk.GetSubKeyNames().Contains("Microsoft .NET Framework 3.5 SP1");
}
person Panos    schedule 13.10.2008
comment
+1, это пока самый простой способ программно проверить, установлен ли 3.5 SP1 - собственно, если он сработал. Пробовал, у меня не работает, всегда возвращает false. - person Evgeniy Berezovsky; 28.07.2011
comment
Просматривая коллекцию, возвращаемую GetSubKeyNames (), для некоторых продуктов используется простое текстовое имя, для некоторых - например, фреймворков .net, используются идентификаторы продуктов {1ea1f -...}. Вот почему его нельзя найти. - person Evgeniy Berezovsky; 28.07.2011