Извлечение и отображение серийного номера тома диска в NSI

#nsis

#nsi

Вопрос:

Я использую NSI (HM NISedit 2.0.3 для редактора) для создания настроек моего приложения. У меня есть требование, чтобы одна из моих настроек использовала серийный номер тома диска (в шестнадцатеричном формате).Мне также нужно отобразить то же самое в окне сообщения. Может кто-нибудь, пожалуйста, отправьте мне полный фрагмент сценария для получения серийного номера тома диска, отображающего его в окне сообщения?

Ответ №1:

На этой странице описывается, как получить серийный номер в шестнадцатеричном формате:

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 "X" $0
  MessageBox MB_OK $0
FunctionEnd
  

и назовите это так:

 StrCpy $0 "C:\"
Call ShowDiskVolumeSerialNumber
  

Очевидно, что вы можете заменить букву диска на любую, какую захотите, но убедитесь, что она имеет двойную обратную косую черту.