Have you ever tried using registration keys to secure your application? If so, you’ve used various methods to accomplish this, such as generating a registration key based on the device’s serial number or something similar.
Or have you attempted to obtain all of the device’s information for analytics? If that’s the case, this TSMBIOS library allows you to retrieve all of the device’s data using your favorite Delphi programming language, which is fantastic! TSMBIOS is a Delphi open source library available on GitHub.
In this post, we’ll show you the official information about the TSMBIOS library!
The SMBIOS (System Management BIOS) is a standard developed by the DMTF. The information stored in the SMBIOS includes device manufacturer, model name, serial number, BIOS version, asset tag, processors, ports, and device memory installed.
The TSMBIOS library allows access to the System Management BIOS (SMBIOS) using the Object Pascal language.

Features
Some features of this project are
- Source Full documented compatible with the help insight feature, available since Delphi 2005.
 - Supports SMBIOS Version from 2.1 to 2.8
 - Supports Windows, Linux.
 - SMBIOS Data can be saved and/or load to a file.
 - SMBIOS Data can be obtained from remote machines (via WMI).
 
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71  | 
						{$APPTYPE CONSOLE} {$R *.res} uses   Classes,   SysUtils,   uSMBIOS in '....CommonuSMBIOS.pas'; procedure GetMemoryDeviceInfo; Var   SMBios : TSMBios;   LMemoryDevice  : TMemoryDeviceInformation; begin   SMBios:=TSMBios.Create;   try       WriteLn('Memory Device Information');       WriteLn('-------------------------');       if SMBios.HasPhysicalMemoryArrayInfo then       for LMemoryDevice in SMBios.MemoryDeviceInformation do       begin         WriteLn(Format('Total Width    %d bits',[LMemoryDevice.RAWMemoryDeviceInfo.TotalWidth]));         WriteLn(Format('Data Width     %d bits',[LMemoryDevice.RAWMemoryDeviceInfo.DataWidth]));         WriteLn(Format('Size           %d Mbytes',[LMemoryDevice.GetSize]));         WriteLn(Format('Form Factor    %s',[LMemoryDevice.GetFormFactor]));         WriteLn(Format('Device Locator %s',[LMemoryDevice.GetDeviceLocatorStr]));         WriteLn(Format('Bank Locator   %s',[LMemoryDevice.GetBankLocatorStr]));         WriteLn(Format('Memory Type    %s',[LMemoryDevice.GetMemoryTypeStr]));         WriteLn(Format('Speed          %d MHz',[LMemoryDevice.RAWMemoryDeviceInfo.Speed]));         WriteLn(Format('Manufacturer   %s',[LMemoryDevice.ManufacturerStr]));         WriteLn(Format('Serial Number  %s',[LMemoryDevice.SerialNumberStr]));         WriteLn(Format('Asset Tag      %s',[LMemoryDevice.AssetTagStr]));         WriteLn(Format('Part Number    %s',[LMemoryDevice.PartNumberStr]));         WriteLn;         if LMemoryDevice.RAWMemoryDeviceInfo.PhysicalMemoryArrayHandle>0 then         begin           WriteLn('  Physical Memory Array');           WriteLn('  ---------------------');           WriteLn('  Location         '+LMemoryDevice.PhysicalMemoryArray.GetLocationStr);           WriteLn('  Use              '+LMemoryDevice.PhysicalMemoryArray.GetUseStr);           WriteLn('  Error Correction '+LMemoryDevice.PhysicalMemoryArray.GetErrorCorrectionStr);           if LMemoryDevice.PhysicalMemoryArray.RAWPhysicalMemoryArrayInformation.MaximumCapacity<>$80000000 then             WriteLn(Format('  Maximum Capacity %d Kb',[LMemoryDevice.PhysicalMemoryArray.RAWPhysicalMemoryArrayInformation.MaximumCapacity]))           else             WriteLn(Format('  Maximum Capacity %d bytes',[LMemoryDevice.PhysicalMemoryArray.RAWPhysicalMemoryArrayInformation.ExtendedMaximumCapacity]));           WriteLn(Format('  Memory devices   %d',[LMemoryDevice.PhysicalMemoryArray.RAWPhysicalMemoryArrayInformation.NumberofMemoryDevices]));         end;         WriteLn;       end       else       Writeln('No Memory Device Info was found');   finally    SMBios.Free;   end; end; begin  try     GetMemoryDeviceInfo;  except     on E:Exception do         Writeln(E.Classname, ':', E.Message);  end;  Writeln('Press Enter to exit');  Readln; end.  | 
					
Head over and check out the TSMBIOS library!
Learn how you can take advantage of a powerful and flexible hard disk space manager called TreeSize in this article.
You can Easily Access System BIOS Information on Windows With Delphi or c++ environments With the Use of a Native Windows Development tool, Try it out and make the most of it. Request a Product Demo here.
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition






