获取BIOS信息

procedure TForm1.BiosInfo;  
const  
Subkey: string = ''Hardware\description\system'';  
var  
hkSB: HKEY;  
rType: LongInt;  
ValueSize, OrigSize: Longint;  
ValueBuf: array[0..1000] of char;  
procedure ParseValueBuf(const VersionType: string);  
var  
I, Line: Cardinal;  
S: string;  
begin  
i := 0;  
Line := 0;  
while ValueBuf[i] <> #0 do  
begin  
S := StrPas(@ValueBuf[i]); // move the Pchar into a string  
Inc(Line);  
Memo1.Lines.Append(Format(''%s Line %d = %s'',  
[VersionType, Line, S])); // add it to a Memo  
inc(i, Length(S) + 1);  
// to point to next sz, or to #0 if at  
end  
end;  
end;  

begin  
if RegOpenKeyEx(HKEY_LOCAL_MACHINE, PChar(Subkey), 0,  
KEY_READ, hkSB) = ERROR_SUCCESS then  
try  
OrigSize := sizeof(ValueBuf);  
ValueSize := OrigSize;  
rType := REG_MULTI_SZ;  
if RegQueryValueEx(hkSB, ''SystemBiosVersion'', nil, @rType,  
@ValueBuf, @ValueSize) = ERROR_SUCCESS then  
ParseValueBuf(''System BIOS Version'');  

ValueSize := OrigSize;  
rType := REG_SZ;  
if RegQueryValueEx(hkSB, ''SystemBIOSDate'', nil, @rType,  
@ValueBuf, @ValueSize) = ERROR_SUCCESS then  
Memo1.Lines.Append(''System BIOS Date '' + ValueBuf);  

ValueSize := OrigSize;  
rType := REG_MULTI_SZ;  
if RegQueryValueEx(hkSB, ''VideoBiosVersion'', nil, @rType,  
@ValueBuf, @ValueSize) = ERROR_SUCCESS then  
ParseValueBuf(''Video BIOS Version'');  

ValueSize := OrigSize;  
rType := REG_SZ;  
if RegQueryValueEx(hkSB, ''VideoBIOSDate'', nil, @rType,  
@ValueBuf, @ValueSize) = ERROR_SUCCESS then  
Memo1.Lines.Append(''Video BIOS Date '' + ValueBuf);  
finally  
RegCloseKey(hkSB);  
end;  
end;

原文地址:https://www.cnblogs.com/martian6125/p/9631357.html