ГЛАВНАЯ     АРХИВ     НАПИСАТЬ АДМИНУ     ПОДПИСАТЬСЯ НА RSS     ВОЙТИ      

Поиск

Категории

Облако тегов

  << Предыдущий пост       Следующий пост >>  
От: inbruk
5. ноября 2010 22:21

Удивительное рядом! Но версию .Net Framework нужно определять почему-то из ключей реестра. Причем так считает сам Microsoft Smile, что вообще очень странно. Подробное руководство о связях между ключами реестра и версиями .Net Framework смотри по ссылке Как определить, какие версии и уровень обслуживания пакета Microsoft NET Framework установлены. Пространные рассуждения по поводу определения установленных версий .Net Framework есть также по ссылке How to detect what NET Framework versions and service packs are installed. Дальше приведен список основных ключей реестра с указанием расшифрованной версии .Net Framework:

Framework Version Registry Key

------------------------------------------------------------------------------------------

1.0 HKLM\Software\Microsoft\Active Setup\Installed Components\{78705f0d-e8db-4b2d-8193-982bdda15ecd}\Version

1.0* HKLM\Software\Microsoft\Active Setup\Installed Components\{FDC11A6F-17D1-48f9-9EA3-9051954BAA24}\Version

1.1 HKLM\Software\Microsoft\NET Framework Setup\NDP\v1.1.4322

2.0** HKLM\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\Version

2.0*** HKLM\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\Increment

3.0 HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.0\Version

3.5 HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5\Version

4.0 Client Profile HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Version

4.0 Full Profile HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Version

------------------------------------------------------------------------------------------

* = Windows Media Center or Windows XP Tablet Edition

** = .NET 2.0 + SP1

*** = .NET 2.0 Original Release (RTM)


А это исходник консольной программы на C#, которая выводит все версии .Net Framework установленные в системе на момент запуска.


using System;
using System.Collections.ObjectModel;
using Microsoft.Win32;

class Program
{
static void Main(string[] args)
{
foreach (Version ver in InstalledDotNetVersions())
Console.WriteLine(ver);

Console.ReadKey();
}


public static Collection<Version> InstalledDotNetVersions()
{
Collection<Version> versions = new Collection<Version>();
RegistryKey NDPKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP", true);
if (NDPKey != null)
{
string[] subkeys = NDPKey.GetSubKeyNames();
foreach (string subkey in subkeys)
{
GetDotNetVersion(NDPKey.OpenSubKey(subkey), subkey, versions);
GetDotNetVersion(NDPKey.OpenSubKey(subkey).OpenSubKey("Client"), subkey, versions);
GetDotNetVersion(NDPKey.OpenSubKey(subkey).OpenSubKey("Full"), subkey, versions);
}
}
return versions;
}

private static void GetDotNetVersion(RegistryKey parentKey, string subVersionName, Collection<Version> versions)
{
if (parentKey != null)
{
string installed = Convert.ToString(parentKey.GetValue("Install"));
if (installed == "1")
{
string version = Convert.ToString(parentKey.GetValue("Version"));
if (string.IsNullOrEmpty(version))
{
if (subVersionName.StartsWith("v"))
version = subVersionName.Substring(1);
else
version = subVersionName;
}

Version ver = new Version(version);

if (!versions.Contains(ver))
versions.Add(ver);
}
}
}
}


Утилита для веб камеры

Похожие записи


Вопросы на собеседовании C#, Net, ASP.NET, SQL
Продолжая тему вопросов на собеседовании. Нашел еще одну подборку. Оригинал лежит здесь . Перенес, чтобы не затерялось. Есть вполне вменяемые ответы (хотя, на некоторые вопросы ответил бы по-другому). Ответы находятся после списка вопросов, я их не менял. 23. Что такое шаблон проектирования Model/View/Controller? Как и зачем его применяют? 2...

Как узнать версию Common Language Runtime из .Net приложения ?
В пространстве имен System есть статический класс Environment. Его публичное свойство Version позволяет узнать версию Common Language Runtime, под которой сейчас работает приложение. Свойство возвращает объект класса Version, в котором упакованы компоненты версии, ревизии и билда (в данном случае CLR). Связь между версиями CLR и версиями можно посмотреть здесь .NET Fr...

Способы заработка на сайте
На этом блоге было много постов про производство и раскрутку сайтов. Но пока не было про заработок на них. Пора исправить этот недочет. Здесь будут описаны по возможности не фантастичные, и не супер низко прибыльные способы. Также упор будет сделан именно на организацию процесса, а не технических деталях, которых в обилии в интернете. Несмотря на то, что как пр...

Комментарии закрыты