PDA

View Full Version : سوال: شماره سریال



seyedreza
یک شنبه 07 تیر 1388, 19:46 عصر
سلام و خسته نباشید
من یه سورس کدی می خوام که شماره سریال هارد یا سی پی یو یا مادربورد رو بهم بده
ممنون

Saeed_m_Farid
یک شنبه 07 تیر 1388, 20:28 عصر
سلام و خسته نباشید
من یه سورس کدی می خوام که شماره سریال هارد یا سی پی یو یا مادربورد رو بهم بده
ممنون
سلام
سريال و lable هارد رو از كد زير ميشه براحتي بدست آورد :


function GetHardDiskSerial(const DriveLetter: Char): string;
var
NotUsed: DWORD;
VolumeFlags: DWORD;
VolumeInfo: array[0..MAX_PATH] of Char;
VolumeSerialNumber: DWORD;
begin
GetVolumeInformation(PChar(DriveLetter + ':\'),
nil, SizeOf(VolumeInfo), @VolumeSerialNumber, NotUsed,
VolumeFlags, nil, 0);
Result := Format('Label = %s VolSer = %8.8X',
[VolumeInfo, VolumeSerialNumber])
end;
كه البته نتيجه يه رشته حاوي برچسب و سريال هارده. براي سريال CPU بايد بدونيد كه منحصربفرد نيست و نميشه بعنوان يه مقدار unique بهش نگاه كرد (در واقع بدرد نمي خوره!)
واسه ساير اطلاعات (از جمله سريال Cpu و Bios، اطلاعات پارتيشن ها، حافظه و شبكه و ...) يه پستي از آقاي عليرضا شيرازي (http://www.ShiraziOnline.net) تو codeproject هست كه به تفكيك تمام اطلاعات سخت افزاري رو توسط توابع WMI API واكشي كرده :
اينجا (http://www.codeproject.com/KB/system/GetHardwareInformation.aspx) (البته سورس واسه دلفي نيست ولي خيلي مفيده)

ترجمه شده قسمت سريال بايوس اين كد بالا، ميشه كد پايين :


function BiosSerialNumber: string;
const
sQuery = 'select SerialNumber from Win32_BIOS';
var
Item: SWbemObject;
NumProp: LongWord;
ObjectSet: ISWbemObjectSet;
OleProperty: OleVariant;
begin
ObjectSet := CoSWbemLocator.Create.ConnectServer( '', 'root\cimv2', '', '', '', '', 0, nil ).ExecQuery( sQuery, 'WQL', wbemFlagBidirectional, nil );
if Succeeded( ( ObjectSet._NewEnum as IEnumVariant ).Next( 1, OleProperty, NumProp ) ) and ( NumProp > 0 ) and Succeeded( IDispatch( OleProperty ).QueryInterface( SWBemObject, Item ) ) then begin
Result := Item.GetObjectText_(0);
end
else begin
Result := '<Unknown>';
end;
end;

saeedr22
یک شنبه 07 تیر 1388, 20:30 عصر
به اینجا یه سرس بزن