Проверка наличия .NET Framework и определение его версии

Проверка наличия .NET Framework и определение его версии

{ **** UBPFD *********** by kladovka.net.ru ****
>>
Функция возвращает номер последней установленной версии .NET Framework на компьютере, или пустую строку, если платформа .NET не установлена, либо установлена криво.
Зависимости: Registry, SysUtils
Автор: Dimka Maslov, <a href="mailto:mainbox@endimus.com">mainbox@endimus.com</a>, ICQ:148442121, Санкт-Петербург
Copyright: Dimka Maslov
Дата: 19 января 2004 г.
********************************************** }

function DotNetVersion: String;
var
 R: TRegistry;
 L: TStringList;
 S: string;
 i, MaxIndex, N, Code: Integer;
 V, MaxVersion: Double;
const
 RegKey = 'Software\Microsoft\.NETFramework\Policy';
begin
 Result := '';
 R := TRegistry.Create;
 try
 R.RootKey := HKEY_LOCAL_MACHINE;
 if R.KeyExists(RegKey) then begin
  R.OpenKeyReadOnly(RegKey);
  L := TStringList.Create;
  try
  R.GetKeyNames(L);
  MaxVersion := -1.0;
  MaxIndex := -1;
  for i := 0 to L.Count - 1 do begin
  S := L[i];
  if UpCase(S[1]) = 'V' then begin
  Delete(S, 1, 1);
  Val(S, V, Code);
  if (Code = 0) and (V > MaxVersion) then begin
  MaxVersion := V;
  MaxIndex := i;
  end;
  end;
  end;
  if MaxIndex <> - 1 then begin
  S := L[MaxIndex];
  R.CloseKey;
  R.OpenKeyReadOnly(RegKey+'\'+S);
  R.GetValueNames(L);
  MaxIndex := -1;
  for i := 0 to L.Count - 1 do begin
  Val(L[i], N, Code);
  if (Code = 0) and (N > MaxIndex) then MaxIndex := N;
  end;
  Result := S;
  Delete(Result, 1, 1);
  if MaxIndex <> -1 then Result := Result + '.' + IntToStr(MaxIndex);
  end;
  finally
  L.Free;
  end;
 end;
 finally
 R.Free;
 end;
end;

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...