![Easily Fetch System Management BIOS Info | Embarcadero RAD Studio Delphi C++Builder Blogs easily fetch system management bios info](https://i0.wp.com/blogs.embarcadero.com/wp-content/uploads/2020/12/Easily-Fetch-System-Management-BIOS-Info-4147210.png?resize=1140%2C675&ssl=1)
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.
![sbiosdevice5494783 | Embarcadero RAD Studio Delphi C++Builder Blogs sbiosdevice 5494783](https://i0.wp.com/blogs.embarcadero.com/wp-content/uploads/2021/01/sbiosdevice-5494783.jpg?resize=750%2C500&ssl=1)
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