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


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

7 88

7 ответов:

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

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

  • The 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();

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

Я пришел на эту страницу, пытаясь выяснить, как обнаружить версии фреймворка, установленные на сервере без доступа к удаленному рабочему столу или реестру, поэтому ответ Danny 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 );
    }
}

взгляните на это статьи который показывает ключи реестра, которые вам нужно искать, и предоставляет библиотеку .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-это не пакет обновления).

чтобы быть правильным о вещах, вам действительно нужно, чтобы убедиться, что .Чистые валютные и 2.0 .Нетто-Форекс 3.0 установлены сначала, а затем проверить, чтобы увидеть, если .Установлен net 3.5 это. Если все три значения истинны, то можно проверить уровень пакета обновления.

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

в 64-битных машинах: Папке %systemroot%\от Microsoft.Чистая\Framework64\В3.5\Майкрософт .Framework 3.5 с\с пакетом обновления 1

в 32-битных машинах: Папке %systemroot%\от Microsoft.Чистая\рамки\В3.5\Майкрософт .Framework 3.5 с\с пакетом обновления 1

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

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