急急急! ( 积分: 50 )

  • 主题发起人 主题发起人 qiangren_2004
  • 开始时间 开始时间
Q

qiangren_2004

Unregistered / Unconfirmed
GUEST, unregistred user!
请问如何读主板的信息,例如序列号什么的
 
请问如何读主板的信息,例如序列号什么的
 
注册表内,HKEY_LOCAL_MACHINE/Hardware/description/system内有一些地址,再去读就可以了,但我没有试过,我看到别人是这样写的。
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1956506
如何像美萍一样取得主板序列号?这问题讨论几年了,大富翁里愣是没一个人会!为什么!!!
 
<<< 关于读 CPU ID 和主板 BIOS 等信息加密软件 >>>
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Do{
读主板信息(Delphi代码,不知用C代码怎么写?):
主板名称: String(PChar(Ptr($FE061)));
版权: String(PChar(Ptr($FE091)));
日期: String(PChar(Ptr($FFFF5)));
序列号: String(PChar(Ptr($FEC71)));
* 不过,这些语句在同一批主板上读出的信息是相同的!
* 并且,在 Win2000 以上版本下运行(编译)无法通过!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* 读 CPU ID:不是所有的 CPU 都有序列号,而且同一型号的 CPU ID 相同!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*读硬盘序列号:有些硬盘没有序列号,或无法正确读取(人为或系统等因素造成)。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
读网卡序列号:局限性太大,且序列号可以用一种很简单的办法修改(改注册表)。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
读用户名或计算机名:局限性太大,在大型网吧等场合不适用(改名后注册码不可用)!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
读其它能在注册表能找到的数据:太不保险,极不安全!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
使用注册名+用户名:注册太灵活,只要注册一套即可通用。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
再就是注册后的信息保存在何处??????很不简单,问题多多!!!!!
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
}Loop
 
读硬盘
GetVolumeInformation
 
我看了别人的试了试,不知对你有没有帮助。
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
with Memo1.Lines do
begin
biosinfo;
end;


end;

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 <> #0 do
begin
S := StrPas(@ValueBuf); // 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;

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;

end.
 
后退
顶部