|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Узнать номер диска по букве
Добрый день друзья, столкнулся с такой проблемой, нужно узнать в программе номер диска по букве. Нашел в сети способ, но он отказывается работать без админских прав, может кто подскажет как быть, либо переделать эту функцию или какую то другую использовать.
Без программы можно узнать номер диска через управление дисками в управлении компьютером, но надо именно программно узнать номер? чтобы потом вытянуть информацию именно об этом диске через WMI Код:
Function GetHDDNumberByLetter(ALetter : Char) : DWord; // Admin only Const IOCTL_STORAGE_GET_DEVICE_NUMBER = $2D1080; Var hDevice, BytesReturned : DWord; DeviceInfo : Packed Record DeviceType, DeviceNumber, PartitionNumber :dword End; Begin Result := 1000; hDevice := CreateFile(PChar('\\.\' + ALetter + ':'), GENERIC_READ Or GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, Nil, OPEN_EXISTING, 0, 0); if (hDevice <> INVALID_HANDLE_VALUE) And DeviceIoControl(hDevice, IOCTL_STORAGE_GET_DEVICE_NUMBER, Nil, 0, @DeviceInfo, SizeOf(DeviceInfo), BytesReturned, Nil) Then Begin Result := DeviceInfo.DeviceNumber; CloseHandle(hDevice) End End; |
#2
|
||||
|
||||
Можно из реестра вытянуть, HKLM\Hardware\hdd, с дословным путём могу ошибаться, но суть должна быть понятной.
df -h — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#3
|
|||
|
|||
Цитата:
Нашел в реестре девайсы, но из них не получется отпределить какая буква относиться к какому номеру диска 2015-06-08_181414.png |