Как получить информацию о BIOS в Windows NT/2000/XP.
Компилятор: Delphi
В NT/2000/XP не получится прочитать значения прямо
из BIOS, однако, ничего не мешает нам считать нужные
значения из реестра.
procedure TBIOSInfo.GetRegInfoWinNT;
var
Registryv : TRegistry;
RegPath : string;
sl :
TStrings;
begin
Params.Clear;
RegPath := '\HARDWARE\DESCRIPTION\System';
registryv:=tregistry.Create;
registryv.rootkey:=HKEY_LOCAL_MACHINE;
sl := nil;
try
registryv.Openkey(RegPath,false);
ShowMessage('BIOS Date: '+RegistryV.ReadString('SystemBiosDate'));
sl := ReadMultirowKey(RegistryV,'SystemBiosVersion');
ShowMessage('BIOS Version: '+sl.Text);
except
end;
Registryv.Free;
if Assigned(sl) then sl.Free;
end;
---------------------------
На всякий пожарный:
//следующий метод получает многострочные
значения из реестра
//и преобразует их в TStringlist
function ReadMultirowKey(reg: TRegistry; Key: string): TStrings;
const bufsize = 100;
var
i: integer;
s1: string;
sl: TStringList;
bin: array[1..bufsize] of char;
begin
try
result := nil;
sl := nil;
sl := TStringList.Create;
if not Assigned(reg) then
raise Exception.Create('TRegistry object not
assigned.');
FillChar(bin,bufsize,#0);
reg.ReadBinaryData(Key,bin,bufsize);
i := 1;
s1 := '';
while i < bufsize do
begin
if ord(bin[i]) >= 32 then
s1 := s1 + bin[i]
else
begin
if Length(s1) > 0 then
begin
sl.Add(s1);
s1 := '';
end;
end;
inc(i);
end;
result := sl;
except
sl.Free;
raise;
end;
end;
|