Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Определение установленных версий .NET Framework в системе 
:(
    Опции темы
Pakshin A. S.
Дата 6.11.2004, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Код

/// <summary> 
/// Enumerates all installed Common Language Runtime Engines. 
/// </summary> 
/// <param name="Index">Zero-based index of looked runtime 
record.</param> 
/// <returns>True if runtime with specified index found.</returns> 
  
function EnumInstalledRuntimes(Index: Integer; out VersionName: String): 
Boolean; 
var 
  hkey: Windows.HKEY; 
  hsubkey: Windows.HKEY; 
  I: Cardinal; 
  J: Cardinal; 
  NameBuf: array[0..MAX_PATH] of Char; 
  CNameBuf: Cardinal; 
  lwt: TFileTime; 
  vt: DWORD; 
  AnyFound: Boolean; 
begin 
  Result := False; 
  VersionName := ''; 
  if ERROR_SUCCESS = RegOpenKeyEx(HKEY_LOCAL_MACHINE, 
  PChar('SOFTWARE\Microsoft\.NETFramework\policy'), 0, 
  KEY_ENUMERATE_SUB_KEYS, hkey) then 
  try 
    I := 0; 
    while True do 
    begin 
      AnyFound := False; 
      CNameBuf := MAX_PATH + 1; 
      if ERROR_SUCCESS <> RegEnumKeyEx(hkey, I, @NameBuf[0], CNameBuf,nil, nil, nil, @lwt) then 
      begin 
        Break; 
      end; 
      if (NameBuf[0] = 'v') and (NameBuf[1] in ['1'..'9']) then 
      begin 
        VersionName := String(NameBuf); 
        if ERROR_SUCCESS = RegOpenKeyEx(hkey, @NameBuf[0], 0,KEY_QUERY_VALUE, hsubkey) then 
        try 
          J := 0; 
          while true do 
          begin 
            CNameBuf := MAX_PATH + 1; 
            if ERROR_SUCCESS <> RegEnumValue(hsubkey, J, @NameBuf[0],CNameBuf, nil, @vt, nil, nil) then 
            begin 
              Break; 
            end; 
            if (vt = REG_SZ) and (NameBuf[0] <> #0) then 
            begin 
              VersionName := VersionName + '.' + String(NameBuf); 
              AnyFound := True; 
              Break; 
            end; 
            Inc(J); 
          end; 
        finally 
          RegCloseKey(hsubkey); 
        end; 
      end; 
      Inc(I); 
      if AnyFound then 
      begin 
        if Index = 0 then 
        begin 
          Result := True; 
          Break; 
        end; 
        Dec(Index); 
      end; 
    end; 
  finally 
    RegCloseKey(hkey); 
  end; 
end; 

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0667 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.