Як дізнатися, чи встановлено .NET 3.5 SP1?


Відповіді:


18

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


1
Піди розберися. Пізніше я подумав, що пропустив "програмно" пункт на ваше запитання, Гай.
rp.

135

Подивіться 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();

8
ім'я рядка const = @ "ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ \ Microsoft \ NET Framework Setup \ NDP \ v3.5"; SubKey RegistryKey = Registry.LocalMachine.OpenSubKey (ім'я); var version = subKey.GetValue ("Версія"). ToString (); var servicePack = subKey.GetValue ("SP"). ToString ();
Кріс Крафт

2
На моїй машині Versionє 3.5.30729.5420і SPє1
Кевін Сміт

2
У командному рядку: 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
Кевін Сміт,

Виникне проблема: якщо у користувача не встановлено .NET, як запускається програма, написана на .NET, щоб виявити, чи встановлено .NET?
zwcloud

27

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


4
Тільки повідомляє вам найвищу версію, хоча, наприклад, якщо у вас є 4, він не скаже вам, чи є у вас також 3.5 sp 1
codeulike

12

Я перейшов на цю сторінку, намагаючись з’ясувати, як виявити версії фреймворку, встановлені на сервері, без доступу до віддаленого робочого столу чи реєстру, тож відповідь Денні 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 );
    }
}

Працював, як для мене очікували. Просто створив новий проект веб-сайту, додав код і розмістив його на спільному ресурсі, а потім запитав сторінку.
Kris van der Mast

9

Погляньте на цю статтю де показано ключі реєстру, які потрібно шукати, та бібліотеку .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. Якщо всі три значення відповідають дійсності, ви можете перевірити рівень пакета оновлень.


1
посилання на статтю змінено, тут це нове місце: codeproject.com/KB/dotnet/frameworkversiondetection.aspx
Дрейк

5

Перевірте, чи існує такий каталог:

У 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

Якщо припустити, що назва всюди є "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");
}

+1, найпростіший спосіб поки що програмно перевірити, чи встановлено 3.5 SP1 - насправді, якщо він працював. Я спробував, це не працює для мене, воно завжди повертає false.
Євген Березовський

Проглядаючи колекцію, яку повертає GetSubKeyNames (), для деяких продуктів використовується ім’я простого тексту, для деяких - як .NET framework, використовуються ідентифікатори продуктів {1ea1f -...}. Тому його неможливо знайти.
Євген Березовський
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.