» GetDrives: перечисляем устройства хранения информации

K.A.V.
www.oszone.net
22.02.2010
Автор: K.A.V.
Последнее обновление: 01.09.2011

Для выполнения команды необходимо:
!include "FileFunc.nsh"
${GetDrives}

Команда "GetDrives" позволяет получить информацию о всех устройствах носителей информации и получить буквы дисков.
Вы можете найти например, только съемные или только локальные диски, либо все доступные в системе.
В последнем примере показано, как определить тип устройства зная букву диска.
${GetDrives} "Параметры" "Функция для вызова"

"Параметры"     ; [FDD+HDD+CDROM+NET+RAM]
                ;   FDD    Floppy дисководы
                ;   HDD    Жесткие диски
                ;   CDROM  CD-ROM приводы
                ;   NET    Сетевые диски
                ;   RAM    RAM
                ;
                ; [ALL]
                ;   Найти все диски (по-умолчанию)
                ;
"Функция для вызова"      ; Вызываемая функция, если что-либо будет найдено

Function "Function"
    ; $9    "Буква диска"  (a:\ c:\ ...)
    ; $8    "Тип диска"    (FDD HDD ...)

    ; $R0-$R9  не используется.
    ; ...

    Push $var    ; Если $var="StopGetDrives" Завершение исполнения функции
FunctionEnd

А теперь примерчики, перечисляем Флоппи и CD-ROM приводы:
Section
    ${GetDrives} "FDD+CDROM" "Example1"
SectionEnd

Function Example1
    MessageBox MB_OK "$9  ($8 Drive)"

    Push $0
FunctionEnd

Перечисляем все устройства:
Section
    ${GetDrives} "ALL" "Example2"
SectionEnd

Function Example2
    MessageBox MB_OK "$9  ($8 Drive)"

    Push $0
FunctionEnd

И последний пример, определяем тип устройства по букве диска:
Section
    StrCpy $R0 "D:\"      ; Буква диска
    StrCpy $R1 "invalid"

    ${GetDrives} "ALL" "Example3"

    MessageBox MB_OK "Устройство с буквой $R0 это $R1"
SectionEnd

Function Example3
    StrCmp $9 $R0 0 +3
    StrCpy $R1 $8
    StrCpy $0 StopGetDrives

    Push $0
FunctionEnd