Как узнать номер 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
Содержание Назад Вперед