Как мне сказать if.NET 3.5 SP1 установлен?
Как я могу узнать, если SP1 был установлен на сервере, который имеет .NET 3.5?
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"); }