На этой странице описано, как получить серийный номер в шестнадцатеричном формате:
http://nsis.sourceforge.net/Get_Disk_Volume_Serial_Number
Итак, чтобы сделать то, что вам нужно, включите эту функцию в ваш скрипт:
Function ShowDiskVolumeSerialNumber
!define GetVolumeInformation "Kernel32::GetVolumeInformation(t,t,i,*i,*i,*i,t,i) i"
System::Call '${GetVolumeInformation ("$0",,${NSIS_MAX_STRLEN},.r0,,,,${NSIS_MAX_STRLEN})'
IntFmt $0 "%08X" $0
MessageBox MB_OK $0
FunctionEnd
и назовите это так:
StrCpy $0 "C:\\"
Call ShowDiskVolumeSerialNumber
Очевидно, что вы можете заменить букву диска на любую, что вам нравится, но убедитесь, что у нее двойной обратный слеш.