2013-08-07 4 views
1

Я работаю над обновлением инструмента, который позволяет пользователям выбирать версию SDK и тип бита для запуска инструментов .NET Framework SDK..Net ключ реестра SDK Framework 4.5.1

Для этого требуется установить место установки самого современного SDK, и мы вернемся полностью до версии 1.0. До сих пор я нашел следующее и искал подтверждения.

v1.0, v1.1 и v2.0. Установочные файлы с ключом установки находятся в соответствующей версии платформы реестра. то есть размещение 64-битной установочной папки представляет собой 64-битную запись реестра, где 32-разрядная установочная директория представляет собой 32-битный раздел реестра.

Examples: 

Windows XP: 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework 

Windows 7 64 bit (v2.0 only): 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\.NETFramework\v2.0 
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\.NETFramework\v2.0 

v3.0, v3.5, папки установки рамки v4.0 имеют 32 битную папку для установки и 64 битную папку установки в обе 32 бит и 64 бит реестра ключей. Это делает вещи достаточно простыми для этих версий. Просто прочитайте ключ как версию бит операционной системы и свое право.

Examples: 

Windows 7 64 bit: 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1\WinSDKNetFx35Tools 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1\WinSDKNetFx35Tools-x64 

v4.5, v4.5.1 Пакеты установки инфраструктуры, похоже, существуют только в 32-битном разделе реестра. Несмотря на то, что существует 64-разрядная установка, раздел реестра существует только под узлом 3264WoW, что означает, что вы должны прочитать его, как 32-битное приложение.

Examples: 

Windows 7 64 bit: 
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.1A\WinSDK-NetFx40Tools 
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.1A\WinSDK-NetFx40Tools-x64 

Примечание любая ссылка на Wow6432Node будет считан с помощью реестра для чтения с 32 битным флагом с, когда на 64-битных Windows. Я никогда не готов Wow6432Node напрямую, просто укажите объект реестра, для которого раздел читать.

Это, кажется, справедливо для сложного, заставляя меня думать, что у меня его нет. Кроме того, я не смог найти окончательную документацию по местам установки .Net SDK.

Итак, вопрос в том, что я пропустил здесь или неправильно.

ответ

1

Вы правы, нет лучшего решения, которые читают 8.1a путь г WOW6432Node

public static string GetSdk81Path(string sdkIdent) 
     { 
      string regPath = Path.Combine(@"SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.1A\", sdkIdent); 
      using (RegistryKey baseKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32)) 
      using (RegistryKey regKey = baseKey.OpenSubKey(regPath, false)) 
      { 
       if (regKey == null) 
       { 
        throw new RegistryKeyNotFoundException("Registry key not found.", baseKey, regPath); 
       } 
       return regKey.GetValue("InstallationFolder").ToString(); 
      } 
     } 
Смежные вопросы