Как мне узнать, установлен ли .NET 3.5 SP1? - PullRequest
89 голосов
/ 14 октября 2008

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

Ответы [ 7 ]

133 голосов
/ 14 октября 2008

Посмотрите на 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();
27 голосов
/ 14 октября 2008

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

18 голосов
/ 14 октября 2008

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

12 голосов
/ 01 мая 2010

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

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 );
    }
}
9 голосов
/ 14 октября 2008

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

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

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

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

5 голосов
/ 04 марта 2010

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

В 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).

2 голосов
/ 14 октября 2008

Предполагая, что название везде "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");
}
...