Як я можу дізнатись, чи встановлений SP1 на сервері, який має .NET 3.5?
Відповіді:
Подивіться HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5\
. Одне з них має бути правдою:
Version
Значення цього ключа повинно бути 3.5.30729.01SP
значення в тому самому ключі має бути 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();
Version
є 3.5.30729.5420
і SP
є1
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
Ви могли б піти до SmallestDotNet, використовуючи IE із сервера. Це покаже вам версію, а також надасть посилання для завантаження, якщо ви застаріли.
Я перейшов на цю сторінку, намагаючись з’ясувати, як виявити версії фреймворку, встановлені на сервері, без доступу до віддаленого робочого столу чи реєстру, тож відповідь Денні 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, тоді встановлюється ця версія Framework.
Подивіться на HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v3.5 \ SP, яке є значенням DWORD, яке вказує на рівень пакета оновлень (де 0 не є пакетом оновлень).
Щоб бути коректним щодо речей, вам дійсно потрібно переконатися, що спочатку інсталюються .NET Fx 2.0 та .NET Fx 3.0, а потім перевірте, чи не встановлено .NET 3.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).
Якщо припустити, що назва всюди є "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");
}