Many software licenses are pretty restrictive when it comes to how, and where you can install a program, but just how good are those programs at determining what type of device they are installed on? Today’s SuperUser Q&A post has the answer to a curious reader’s question.
Today’s Question & Answer session comes to us courtesy of SuperUser—a subdivision of Stack Exchange, a community-driven grouping of Q&A web sites.
Photo courtesy of Robert (Flickr).
SuperUser reader Abhi wants to know if software can actually differentiate between a desktop computer and a laptop:
A license for CPU-intensive software like Pix4D says that it can be installed on two devices, but with one condition. Reading the fine print, it seems that one device can be a full-processing desktop/workstation whereas the second one must be a laptop or mobile device.
How would the software know what type of device it is installed on? Are there giveaways in the hardware specifications for determining something like this (i.e. the presence of a battery)?
Given that the software is fully functional on both devices, would this condition become irrelevant if I just buy a high-end laptop which is just as fast as the desktop?
Can software actually differentiate between a desktop computer and a laptop?
SuperUser contributors abnev and Technik Empire have the answer for us. First up, abnev:
On Linux, you can run the following command:
- sudo dmidecode –string chassis-type
On a laptop, this will return laptop, notebook, portable, or sub-notebook (depending on the manufacturer).
For Windows, refer to the following TechNet documentation to determine your computer chassis type: Identifying the Chassis Type of a Computer
Followed by the answer from Technik Empire:
To add to the other answer here regarding Linux, Windows software can also access this information through various provided WinAPI methods/objects. One such example is Win32_ComputerSystem, which among others, has members like:
Possible values include:
As for how Windows knows this, while I cannot say with certainty because I presently lack both the Windows source code and any official documentation links, I would say it is a simple matter of the hardware ID’s within the computer giving this information away to the operating system.
Since Windows has a massive partner network that submits their drivers directly to Microsoft (for driver updates via Windows Update and “standard” drivers to include with installation media), it is pretty easy for Windows to figure out precisely what kind of computer you have it installed on. Just by the CPU ID alone, you could determine whether it is a desktop computer or a laptop.
Have something to add to the explanation? Sound off in the comments. Want to read more answers from other tech-savvy Stack Exchange users? Check out the full discussion thread here.