Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > ОС и железо
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.06.2015, 15:11
hilaryon hilaryon вне форума
Прохожий
 
Регистрация: 19.11.2010
Сообщения: 18
Репутация: 10
По умолчанию Узнать номер диска по букве

Добрый день друзья, столкнулся с такой проблемой, нужно узнать в программе номер диска по букве. Нашел в сети способ, но он отказывается работать без админских прав, может кто подскажет как быть, либо переделать эту функцию или какую то другую использовать.

Без программы можно узнать номер диска через управление дисками в управлении компьютером, но надо именно программно узнать номер? чтобы потом вытянуть информацию именно об этом диске через 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  
Старый 08.06.2015, 17:53
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Можно из реестра вытянуть, HKLM\Hardware\hdd, с дословным путём могу ошибаться, но суть должна быть понятной.

df -h
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #3  
Старый 08.06.2015, 18:16
hilaryon hilaryon вне форума
Прохожий
 
Регистрация: 19.11.2010
Сообщения: 18
Репутация: 10
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
Можно из реестра вытянуть, HKLM\Hardware\hdd, с дословным путём могу ошибаться, но суть должна быть понятной.

df -h

Нашел в реестре девайсы, но из них не получется отпределить какая буква относиться к какому номеру диска

2015-06-08_181414.png
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 04:46.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter