我正在构建一个需要检索安装操作系统的驱动器的磁盘卷的设置。我尝试了以下代码:
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
以上给出了c:\
驱动器的卷号。但是,如果我的操作系统已安装,d:\
否则e:\
它将无法工作。我想要一个功能,它会自动检测安装操作系统的驱动器并检索其卷号。
其次,检索到的卷号没有连字符(例如349620C1
)。我需要将卷序列号检索为3496-20C1
.
有人可以提供一个完整的 NSIS 功能什么时候会做这两件事,即:
- 自动检测安装操作系统的驱动器并检索其序列号,并在其间使用连字符。