Добрый день друзья, столкнулся с такой проблемой, нужно узнать в программе номер диска по букве. Нашел в сети способ, но он отказывается работать без админских прав, может кто подскажет как быть, либо переделать эту функцию или какую то другую использовать.
Без программы можно узнать номер диска через управление дисками в управлении компьютером, но надо именно программно узнать номер? чтобы потом вытянуть информацию именно об этом диске через 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;