获取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;
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;