Как получить информацию о BIOS в Windows NT, 2000, XP
В 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 ;
Если Вас заинтересовала или понравилась информация по разработке на Delph - "Как получить информацию о BIOS в Windows NT, 2000, XP", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу:
Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи , в сообщение обязательно указывайте название или ссылку на статью!