Как узнать номер BIOS для разных версий Windows?
Как узнать номер BIOS для разных версий Windows?
Windows 9X
with Memo1.Lines do
begin
Add('MainBoardBiosName:'+^I+string(Pchar(Ptr($FE061))));
Add('MainBoardBiosCopyRight:'+^I+string(Pchar(Ptr($FE091))));
Add('MainBoardBiosDate:'+^I+string(Pchar(Ptr($FFFF5))));
Add('MainBoardBiosSerialNo:'+^I+string(Pchar(Ptr($FEC71))));
end;
Windows NT
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;
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;
нашел на
и
Автор ответа: МММ
Взято с Vingrad.ru