Now that you have a working Win11 ISO, you can take advantage of the SMBIOS hardware licensing feature that most manufacturers use. This means you don’t need to bother with typing in product keys all the time.
All you need to do is extract some the required details from a machine that has hardware licensing stored in its firmware.
It’s important that you are aware that to remain compliant with the OEM license, you are required to be running the VM on same machine you’ve extracted the firmware activation tables from.
Run the following script to extract the relevant bits:
mkdir -p /tmp/MSDM
cd /tmp/MSDM
for f in SLIC MSDM; do
[ -e /sys/firmware/acpi/tables/$f ] && cat /sys/firmware/acpi/tables/$f > $f.bin
done
dmidecode -t 0 -u | awk '/^\t\t[0-9A-F][0-9A-F]( |$)/' | xxd -r -p > smbios_type_0.bin
dmidecode -t 1 -u | awk '/^\t\t[0-9A-F][0-9A-F]( |$)/' | xxd -r -p > smbios_type_1.bin
That script generates up to four files in /tmp/MSDM.
If you have a MSDM.bin file in /tmp/MSDM, then you’ve done this on the correct machine, and it does have hardware licensing. If you only have a SLIC.bin then you may or may not have a valid license. If you don’t have either, you’ve run this on the wrong machine and it doesn’t have a valid license.
The SLIC table is used with earlier versions of Windows. From Win10 onwards it uses the MSDM table, and for many years machines had both.
This is because if you upgraded your Win7 or 8 machine to Win10, and it doesn’t have a MSDM table, Microsoft are aware of this and have an electronic license that will be applied as part of the install.
Take all the files you extracted and put them somewhere that Proxmox can see. I usually put them into a shared mount to ensure that you can migrate the VM without everything crashing.
In this example, let’s put all of the files that were extracted into /mnt/pve/store1/slic/w11pro/ – SLIC.bin, MSDM.bin, and both smbios files.
Turn off the VM that you want to automatically activate and edit the raw config file, as you need to make two changes:
Add an args: line (or update if you have already created one) with the following settings (note this is all on one, long, line!)
args: -acpitable file=/mnt/pve/store1/slic/win11pro/MSDM.bin -acpitable file=/mnt/pve/store1/slic/win11pro/SLIC.bin -smbios file=/mnt/pve/store1/slic/win11pro/smbios_type_0.bin -smbios file=/mnt/pve/store1/slic/win11pro/smbios_type_1.bin
If you don’t have a MSDM.bin or SLIC.bin then you (obviously) don’t need to add it! If you don’t have either then there’s no use, you don’t have any activation certificates or keys!
You also need to delete the ‘smbios1:’ line if it exists. This is because you are overriding it with the args above. If you do not remove it, you will not be able to start the VM.
You can now turn on the VM and start a Windows install. If you have followed the standard instructions when creating your own ISO, or have used the ISO Builder Tool from Microsoft, you will know if it worked if you are not prompted for a product key when installing.
If your ISO is configured to always ask for a product key, or always install a specific release, you won’t know until installation is complete.
However, if you haven’t overridden the detection, you can check which version your SLIC or MSDM tables have activated as soon as the first reboot is complete, by pushing Shift-F10 to open a command prompt, and then running ‘winver’, which will display which version has been activated.

If you only have a SLIC, make sure your VM has internet access as part of the install. Microsoft will activate the OS with the correct version, based on the hash of the two smbios files.

