Как узнать номер жесткого диска

Как узнать серийный номер жесткого диска, SSD или тома в Windows 10, 8 или 7

Читайте, как определить серийный номер жесткого диска или тома не вставая из стула, с помощью командной строки. Во время покупки или улучшения ПК пользователи задумываются над тем, какие компоненты наиболее важны для них. Исходя из этого выбора на более важные компоненты тратится большая часть бюджета на покупку, а остальные комплектующие подбираются по принципу – чем дешевле, тем лучше. Наиболее значимым компонентом системы является жесткий диск. На нем хранится вся информация вашего компьютера.

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

Чтобы найти серийный номер жесткого диска или серийный номер твердотельного накопителя, введите в командной строке следующую команду:

wmic diskdrive get serialnumber

В результате вы получите список серийных номером дисков, подключенных к системе. Этот номер необходимо предоставить производителю устройства или инженеру сервисного центра для обращения по гарантии. Этот способ работает для внешних жестких дисков, USB флешек и карт памяти.

Серийный номер устройства прошивается в микропрограмму производителем и не подлежит изменению.

Серийный номер тома (логического устройства) отличается от номера устройства и создается во время разбиения диска на разделы. Для получения номера запустите командную строку нажав сочетание клавиш Windows + R, затем введите cmd и нажмите Enter. В командной строке введите:

Вы должны заменить c: буквой диска, на которой хотите найти серийный номер. Помимо серийного номера команда выводит метку диска, если она задана. Для изменения серийного номера раздела можно воспользоваться специальными программами пере разбить диск на разделы.

Надежное возвращение удаленных данных.

Универсальная программа для восстановления данных с жесткого диска, карты памяти или USB флешки.

Просмотр истории браузеров и сохраненных паролей.

Сканирует файлы браузеров и отображает информацию о проведенном в Интернете времени.

Восстановление удаленных офисных документов.

Безопасное восстановление документов, электронных таблиц, презентаций в пошаговом режиме.

Команда VOL – отобразить метку и серийный номер тома.

Команда VOL является внутренней командой интерпретатора команд и позволяет отобразить метку (Label) и серийный номер тома (Volume ID).

Формат командной строки:

диск: – диск, для которого отображаются метка и серийный номер.

Если диск не задан, то отображается метка текущего диска. Пример отображаемой информации:

Том в устройстве G имеет метку SSD_G
Серийный номер тома: 302B-6CA3

Метка тома – это обычная строка символов. Серийный номер представляет собой два 4-значных шестнадцатеричных числа, разделенных дефисом. Это уникальный идентификатор тома, присваиваемый ему при форматировании.

Для получения информации о нескольких дисках используется формат:

VOL C: D: E: – отобразить метки и серийные номера для 3-х дисков

Если команда VOL применяется по отношению к съемному носителю (CD/DVD, карты памяти и т.п.), который отсутствует, то отображается сообщение о неготовности устройства и устанавливается значение кода возврата ERRORLEVEL, равное 1.

Обычно, метка и серийный номер формируются в момент форматирования и не меняются в дальнейшем. В случае необходимости, метку тома можно изменить стандартными средствами системы, используя ”Свойства” диска или команду LABEL. Изменение серийного номера программными средствами системы не предусмотрено. Поэтому этот уникальный идентификатор, очень часто используется различными средствами защиты ПО для привязки установленных программ к определенному компьютеру. При переустановке системы с форматированием жесткого диска такие программы придется активировать заново, поскольку серийный номер тома изменится. Нередко этот идентификатор используется в различных античитах онлайновых игр, чтобы идентифицировать пользователей по конфигурации компьютера и банить нарушителей. Изменить же серийный номер можно с использованием стороннего программного обеспечения, как например, утилиты VolumeID, скачать которую можно на странице загрузки ресурса Windows Sysinternals от Microsoft.

Синтаксис: volumeid буква_диска: xxxx-xxxx

Например, volumeid C: abcd-1234 – установить для диска C: значение серийного номера, равное abcd-1234.

Для вступления изменений в силу может потребоваться перезагрузка. Пред сменой серийного номера, желательно записать его старое значение, на тот случай, если придется делать восстановление из-за проблем с потерей регистрации платных программ.

Если вы желаете поделиться ссылкой на эту страницу в своей социальной сети, пользуйтесь кнопкой “Поделиться”

Инструкции по поиску серийных номеров накопителей Seagate, Samsung Maxtor и LaCie.

Серийный номер продукта — это уникальный идентификатор, на основе которого мы можем найти гарантийную и другую информацию о нем.

Windows
Если диск подключен к компьютеру, воспользуйтесь простым инструментом от Seagate — приложением DriveDetect.exe. Оно позволяет определить номер модели и серийный номер любого диска Seagate, Samsung или Maxtor.

Для отображения каждого номера можно также использовать ПО SeaTools.

Примечание. Инструменты Drive Detect и SeaTools не поддерживают диски LaCie.

Mac
Если диск подключен к компьютеру Mac, для определения номера модели и серийного номера диска можно использовать приложение Apple System Profiler.

  • Щелкните по значку Apple (вверху слева) и выберите About This Mac (Об этом компьютере Mac).
  • В некоторых версиях Mac OS после этого необходимо выбрать More Info (Дополнительная информация).
  • Выберите System Report/System Information (Отчет о системе/Информация о системе) в зависимости от версии Mac OS. Откроется новое окно с информацией о компьютере Mac.
  • В левом столбце Hardware (Аппаратное обеспечение) выберите нужный интерфейс (USB, SATA, FireWire, Thunderbolt и т. д.).
  • В центральном окне найдите и выберите нужный накопитель.
  • Снизу по центру отобразятся сведения о накопителе.
  • Там же будет указан номер модели и (или) серийный номер.

Если USB-накопитель не распознается или не подключен к компьютеру, проверьте его корпус (для внешних устройств) или этикетки (для внутренних жестких дисков): обычно серийные номера и артикулы указываются там.

QR-код.
Этикетки некоторых наших дисков снабжены QR-кодом, как показано ниже. Каждый код уникален и связан с серийным номером накопителя. По нему можно проверить подлинность продукта, состояние гарантии и получить подробные сведения о диске. Для проверки накопителя введите или отсканируйте QR-код.

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

Ниже показано, где находится серийный номер на дисках разных моделей.

Внимание! Перед поиском серийного номера безопасно извлеките и отключите диск, а также выключите его питание.

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

Способ № 1. Свойства диска.

Самый простой способ, узнать какой жесткий диск стоит на компьютере это воспользоваться встроенными инструментами в операционной системе Windows. Для этого откройте окно «Мой компьютер», кликните правой кнопкой мышки по любому жесткому диску и выберите пункт меню «Свойства».

После этого перед вами откроется окно «Свойства диска». Здесь, на вкладке «Оборудование», находится список всех накопителей, подключенных к компьютеру.

Среди прочего в этом списке есть и жесткие диски. Единственный минус названия жестких дисков представлены в сокращенном виде.

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

Способ № 2. Программа HDDlife Professional.

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

Как видно на скриншоте выше, программа HDDlife предоставляет информацию о модели жесткого диска, производителе жесткого диска, техническом состоянии жесткого диска, температуре, а также о логических дисках.

Программу HDDlife Professional можно скачать на сайте разработчика. Там же можно скачать программы HDDlife for Notebooks (Версия для ноутбуков) и SSD Life Professional (версия для SSD накопителей).

Способ № 3. Программа CrystalDiskInfo.

CrystalDiskInfo – можно считать бесплатной альтернативой программе HDDlife Professional. Программа CrystalDiskInfo отображает информацию о всех жестких дисках, которые стоят на компьютере. При этом для каждого жесткого диска отображается название модели, версия прошивки, серийный номер, используемый интерфейс, буква тома, скорость вращения, число включений, общее время в работе, температура, данные системы S.M.A.R.T., а также другая информация.

Для SSD накопителей в CrystalDiskInfo может отображаться некоторая дополнительная информация. Например, объем прочитанных и записанных данных за все время работы накопителя. Скачать программу можно на официальном сайте.

В заключении рекомендуем ознакомиться с нашей статьей о проверке жестких дисков на исправность.

Как узнать информацию о жестких дисках (серийный номер, модель, интерфейс)

Как узнать информацию о жестких дисках (серийный номер, модель, интерфейс).

В теме «Как узнать информацию о жестких дисках (серийный номер, модель, интерфейс)» я расскажу как можно узнать серийный номер, модель или интерфейс вашего устройства на жестком диске. Существует довольно много решений, приведу несколько.

Первое что я сделаю, так это посмотрю какие у меня разделы имеются:

вывод имеющихся разделов программой lsblk

1. Первую утилиту что я могу порекомендовать Вам — это утилита hdparm.

Если вы используете RedHat/Centos/Fedora:

Если вы используете Debian/Ubuntu/Linux Mint для установки программы:

Чтобы использовать эту утилиту нужно запустить ее с опцией «-i» и добавить нужный нам раздел:

пример использования hdparm с ключем -i для раздела sdf

2. Советую так же утилиту lshw.

Эта программа показывает информацию не только о HDD, так же она выводит в удобно для вас формате (TXT-формате, HTML или XML).

Чтобы установить ее на CentOS/RedHat/Fedora, но если не стоит у вас эта программа, нужно выполнить:

Чтобы установить ее на Ubuntu/Linux Mint или Debian:

Чтобы получить нужную информацию с помощью утилиты lshw, выполните:

пример использования lshw -class disk -class storage

Если вам нужно вывести информацию только об установленных дисках на вашей ОС, вы можете использовать:

пример использования команды lshw -short -C disk

3. Что еще за утилиту могу посоветовать для использования — так это smartctl.

При помощи программы smartctl можно выводить информацию о состоянии ваших устройств, которые поддерживают SMART. Вот пример использования команды для SATA-устройства:

Я использую просто вот так:

4. Напоследок, приведу я графическую утилиту — GNOME Disk Utility.

Чтобы установить ее для использования в Debian/Ubuntu/ Linux Mint, выполните:

Если используете Fedora/CentOS или RedHat, то выполните:

Утилита эта удобна тем, что у нее есть графический интерфейс (GUI), после установки вы можете ее запустить через командную строку ( а можно и найти ее в меню):

Очень проста в использовании и очень простая.

Может у кого-нибудь есть функция (код)?


> IdeSN2

ну да, верно. спрашивающему же на ОС наплевать.

Windows) XP и выше

Alex Konshin писал такие функции.
Можно найти его на форуме, написать и проконсультироваться
http://www.delphimaster.ru/cgi-bin/anketa.pl?id=1197761880

Серийный номер тома можно получить следующим образом:
Код:

function GetHardDiskSerial(const DriveLetter: Char): string;
var
NotUsed: DWORD;
VolumeFlags: DWORD;
VolumeInfo: array[0..MAX_PATH] of Char;
VolumeSerialNumber: DWORD;
begin
GetVolumeInformation(PChar(DriveLetter + “:\”),
nil, SizeOf(VolumeInfo), @VolumeSerialNumber, NotUsed,
VolumeFlags, nil, 0);
Result := Format(“Label = %s VolSer = %8.8X”,
[VolumeInfo, VolumeSerialNumber])
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(GetHardDiskSerial(“c”));
end;

это логического диска (c: d: e: итп), но не физического (\\.\PhysicalDrive0 \\.\PhysicalDrive1 итп).

более того: через wmi тоже нет уверенности – может быть подделан клонирующими disk-to-disk программами

вообще идея серийников железа была похоронена давным давно, борцами за приватность личной жизни

Весь инет кешит кодом как получить Серийный номер тома, но вот заводского пример я нашёл только 1 и там сам код вообще мне не понятен. Т.е. ладно у меня 1 диск, а если у кого 2, не понятно какую инфу он выдаст

> [9] Коля (29.09.13 19:04)
> но вот заводского пример я нашёл только 1

Просмотри подходящие темы
http://www.delphimaster.net/?s=%2B%D0%A1%D0%B5%D1%80%D0%B8%D0%B9%D0%BD%D1%8B%D0%B9+%2B%D0%BD%D0%BE%D0%BC%D0%B5%D1%80&pcount=50&forum=0&user=&order=REPLYDATE&dir=desc&title=1&message=1&date_begin =&date_end=

вот что то ещё на форуме нашёл
“Вот полный исходник с примером, если кому нужно:

3.6 Кб. “
скачал, но там при нажатии на “покажи мне это” показывают китайские символы, что делать?)


> показывают китайские символы, что делать?)

Учить китайский.

Весь вкус программирования!

cashman » 18.12.2004 (Сб) 0:14

tyomitch » 18.12.2004 (Сб) 0:22

deepslam » 18.12.2004 (Сб) 0:23

Разницы в интерфесах нету помоему.
Что то мне подсказывает, что номер из биоса вытащить мона.

Упс че то я не заметил, что ответили уже. Сорри.

cashman » 18.12.2004 (Сб) 0:42

2tyomitch:
1 исходник – я его качал уже раньше, в нем-то автор и сомневается на счет SCSI. У меня он на IDE работает. Но прога таскает за собой свой .OCX – хотелось бы без него
2 исходник – определяет не заводской номер, а серийны – не годится

Просто мне нужно, чтоб под каждый жесткий выдавался ответ в виде номера. Я пока проверил на своем IDE, другого не имею. Если кто с дугим интерфейсом (указанным выше), проверьте 1-й исходник на себе (т.е. на своем жестком).
Очень надо.

areh » 18.12.2004 (Сб) 1:22

cashman » 18.12.2004 (Сб) 3:04

Поместишь файлы:
VicHW00.vxd в c:\windows\system
VicHW00.sys в c:\windows\system32\drivers

+ в Инете давно нашел еще один исходник HDDSerial (под VB6)
Он без запарки с файлами и регистрацией.
Проверь сходятся ли у тебя номера в двух прогах.
и выложи его.
У меня 662201924638

там появится сообщение о незарегистрированной копии – не обращай внимания.

cashman » 18.12.2004 (Сб) 3:13

tyomitch » 18.12.2004 (Сб) 9:56

areh » 18.12.2004 (Сб) 14:30

Итак, у меня 2 харда Maxrot’а, по 200 Гб

FSODrive выдал:
С: 671462417
Е: -1943701671

а вторая програмка не признала наличия харов. т.к. SATA не делятся на Primary/Secondary, Master/Slave .

счас я ещё побалуюсь с номером харда и скажу результаты.

cooler » 18.12.2004 (Сб) 18:43

Private Declare Function GetVolumeSerialNumber Lib “kernel32” Alias “GetVolumeInformationA” (ByVal lpRootPathName As String, ByVal
lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long,
lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
Private Function VolumeSerialNumber(ByVal RootPath As String) As String
Dim VolLabel As String
Dim VolSize As Long
Dim Serial As Long
Dim MaxLen As Long
Dim Flags As Long
Dim Name As String
Dim NameSize As Long
Dim s As String
Dim ret as Boolean
ret=GetVolumeSerialNumber(RootPath, VolLabel, VolSize, _
Serial, MaxLen, Flags, Name, NameSize)
If ret Then
‘Create an 8 character string
s = Format(Hex(Serial), “00000000”)
‘Adds the ‘-‘ between the first 4 characters and the last 4 characters
VolumeSerialNumber = Left(s, 4) + “-” + Right(s, 4)
Else
‘If the call to API function fails the function returns a zero serial number
VolumeSerialNumber = “0000-0000”
End If
End Function

Private Sub Command1_Click()
MsgBox VolumeSerialNumber(“C:\”) ‘Shows the serial number of your Hard Disk
End Sub

Private Declare Function GetVolumeInformation Lib “kernel32.dll” Alias “GetVolumeInformationA” (ByVal lpRootPathName As String, ByVal
lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Integer, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long,
lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
Function GetSerialNumber(DriveLetter As String) As String
Dim SerialNum As Long
Dim VolNameBuf As String
Dim FileSysNameBuf As String
Select Case Len(DriveLetter)
Case 1
If LCase(DriveLetter) Like “[a-z]” Then
DriveLetter = Left(DriveLetter, 1) & “:\”
Else
GetSerialNumber = “Error – Bad drive designation”
End If
Case 2
If LCase(DriveLetter) Like “[a-z]:” Then
DriveLetter = DriveLetter & “\”
Else
GetSerialNumber = “Error – Bad drive designation”
End If
Case 3
If LCase(DriveLetter) Like “[!a-z]:\” Then
GetSerialNumber = “Error – Bad drive designation”
End If
Case Else
GetSerialNumber = “Error – Bad drive designation”
End Select
If Len(GetSerialNumber) = 0 Then
VolNameBuf = String(255, Chr(0))
FileSysNameBuf = String(255, Chr$(0))
GetVolumeInformation DriveLetter, VolNameBuf, Len(VolNameBuf), SerialNum, 0, 0, FileSysNameBuf, Len(FileSysNameBuf)
GetSerialNumber = Right(“00000000” & Hex(SerialNum),
End If
End Function

Private Sub Command1_Click()
MsgBox GetSerialNumber(“C:”)
End Sub
вобщем думаю всё понятно, имя диска можно менять на любой, в принципе должно работать и для scsi, raid,sata для floppy,cdrom,hdd- работает – проверенно

Mizin Alex » 18.12.2004 (Сб) 22:45

Еще вариант. Но! Пример определяет именно название и серийный номер HDD нанесенный на корпус. Определить SN: можно у всех HDD.
Я закинул пример в класс, но ничего не мешает его задвинуть и в модуль.
Но хотелось-бы узнать о результатах тестирования на SCSI и SATA. На IDE пример работает! Как и все заинтересованные в данном вопросе жду результатов тестирования !
C ув. Alex

Private Const GENERIC_READ = &H80000000
Private Const GENERIC_WRITE = &H40000000
Private Const FILE_SHARE_READ = &H1
Private Const FILE_SHARE_WRITE = &H2
Private Const OPEN_EXISTING = 3
Private Const CREATE_NEW = 1
Private Const INVALID_HANDLE_VALUE = -1
Private Const VER_PLATFORM_WIN32_NT = 2
Private Const IDENTIFY_BUFFER_SIZE = 512
Private Const OUTPUT_DATA_SIZE = IDENTIFY_BUFFER_SIZE + 16

‘GETVERSIONOUTPARAMS contains the data returned
‘from the Get Driver Version function
Private Type GETVERSIONOUTPARAMS
bVersion As Byte ‘Binary driver version.
bRevision As Byte ‘Binary driver revision
bReserved As Byte ‘Not used
bIDEDeviceMap As Byte ‘Bit map of IDE devices
fCapabilities As Long ‘Bit mask of driver capabilities
dwReserved(3) As Long ‘For future use
End Type

‘IDE registers
Private Type IDEREGS
bFeaturesReg As Byte ‘Used for specifying SMART “commands”
bSectorCountReg As Byte ‘IDE sector count register
bSectorNumberReg As Byte ‘IDE sector number register
bCylLowReg As Byte ‘IDE low order cylinder value
bCylHighReg As Byte ‘IDE high order cylinder value
bDriveHeadReg As Byte ‘IDE drive/head register
bCommandReg As Byte ‘Actual IDE command
bReserved As Byte ‘reserved for future use – must be zero
End Type

‘SENDCMDINPARAMS contains the input parameters for the
‘Send Command to Drive function
Private Type SENDCMDINPARAMS
cBufferSize As Long ‘Buffer size in bytes
irDriveRegs As IDEREGS ‘Structure with drive register values.
bDriveNumber As Byte ‘Physical drive number to send command to (0,1,2,3).
bReserved(2) As Byte ‘Bytes reserved
dwReserved(3) As Long ‘DWORDS reserved
bBuffer() As Byte ‘Input buffer.
End Type

‘Valid values for the bCommandReg member of IDEREGS.
Private Const IDE_ID_FUNCTION = &HEC ‘Returns ID sector for ATA.
Private Const IDE_EXECUTE_SMART_FUNCTION = &HB0 ‘Performs SMART cmd.
‘Requires valid bFeaturesReg,
‘bCylLowReg, and bCylHighReg

‘Cylinder register values required when issuing SMART command
Private Const SMART_CYL_LOW = &H4F
Private Const SMART_CYL_HI = &HC2

‘Status returned from driver
Private Type DRIVERSTATUS
bDriverError As Byte ‘Error code from driver, or 0 if no error
bIDEStatus As Byte ‘Contents of IDE Error register
‘Only valid when bDriverError is SMART_IDE_ERROR
bReserved(1) As Byte
dwReserved(1) As Long
End Type

Private Type IDSECTOR
wGenConfig As Integer
wNumCyls As Integer
wReserved As Integer
wNumHeads As Integer
wBytesPerTrack As Integer
wBytesPerSector As Integer
wSectorsPerTrack As Integer
wVendorUnique(2) As Integer
sSerialNumber(19) As Byte
wBufferType As Integer
wBufferSize As Integer
wECCSize As Integer
sFirmwareRev(7) As Byte
sModelNumber(39) As Byte
wMoreVendorUnique As Integer
wDoubleWordIO As Integer
wCapabilities As Integer
wReserved1 As Integer
wPIOTiming As Integer
wDMATiming As Integer
wBS As Integer
wNumCurrentCyls As Integer
wNumCurrentHeads As Integer
wNumCurrentSectorsPerTrack As Integer
ulCurrentSectorCapacity As Long
wMultSectorStuff As Integer
ulTotalAddressableSectors As Long
wSingleWordDMA As Integer
wMultiWordDMA As Integer
bReserved(127) As Byte
End Type

‘Structure returned by SMART IOCTL commands
Private Type SENDCMDOUTPARAMS
cBufferSize As Long ‘Size of Buffer in bytes
DRIVERSTATUS As DRIVERSTATUS ‘Driver status structure
bBuffer() As Byte ‘Buffer of arbitrary length for data read from drive
End Type

‘Vendor specific feature register defines
‘for SMART “sub commands”
Private Const SMART_ENABLE_SMART_OPERATIONS = &HD8

‘Status Flags Values
Public Enum STATUS_FLAGS
PRE_FAILURE_WARRANTY = &H1
ON_LINE_COLLECTION = &H2
PERFORMANCE_ATTRIBUTE = &H4
ERROR_RATE_ATTRIBUTE = &H8
EVENT_COUNT_ATTRIBUTE = &H10
SELF_PRESERVING_ATTRIBUTE = &H20
End Enum

‘IOCTL commands
Private Const DFP_GET_VERSION = &H74080
Private Const DFP_SEND_DRIVE_COMMAND = &H7C084
Private Const DFP_RECEIVE_DRIVE_DATA = &H7C088

Private Type ATTR_DATA
AttrID As Byte
AttrName As String
AttrValue As Byte
ThresholdValue As Byte
WorstValue As Byte
StatusFlags As STATUS_FLAGS
End Type

Private Type DRIVE_INFO
bDriveType As Byte
SerialNumber As String
Model As String
FirmWare As String
Cilinders As Long
Heads As Long
SecPerTrack As Long
BytesPerSector As Long
BytesperTrack As Long
NumAttributes As Byte
Attributes() As ATTR_DATA
End Type

Private Enum IDE_DRIVE_NUMBER
PRIMARY_MASTER
PRIMARY_SLAVE
SECONDARY_MASTER
SECONDARY_SLAVE
TERTIARY_MASTER
TERTIARY_SLAVE
QUARTIARY_MASTER
QUARTIARY_SLAVE
End Enum

Private Declare Function CreateFile Lib “kernel32” _
Alias “CreateFileA” _
(ByVal lpFileName As String, _
ByVal dwDesiredAccess As Long, _
ByVal dwShareMode As Long, _
lpSecurityAttributes As Any, _
ByVal dwCreationDisposition As Long, _
ByVal dwFlagsAndAttributes As Long, _
ByVal hTemplateFile As Long) As Long

Private Declare Function CloseHandle Lib “kernel32” _
(ByVal hObject As Long) As Long

Private Declare Function DeviceIoControl Lib “kernel32” _
(ByVal hDevice As Long, _
ByVal dwIoControlCode As Long, _
lpInBuffer As Any, _
ByVal nInBufferSize As Long, _
lpOutBuffer As Any, _
ByVal nOutBufferSize As Long, _
lpBytesReturned As Long, _
lpOverlapped As Any) As Long

Private Type OSVERSIONINFO
OSVSize As Long
dwVerMajor As Long
dwVerMinor As Long
dwBuildNumber As Long
PlatformID As Long
szCSDVersion As String * 128
End Type

Private Declare Function GetVersionEx Lib “kernel32” _
Alias “GetVersionExA” _
(lpVersionInformation As OSVERSIONINFO) As Long
Dim SN As String
Dim DN As String
‘\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Property Get GetNum() As String
GetNum = SN
End Property
Property Get GetName() As String
GetName = DN
End Property

Private Function GetDriveInfo(drvNumber As IDE_DRIVE_NUMBER) As DRIVE_INFO

Dim hDrive As Long
Dim di As DRIVE_INFO

If hDrive <> INVALID_HANDLE_VALUE Then

If SmartGetVersion(hDrive) = True Then

With di
.bDriveType = 0
.NumAttributes = 0
ReDim .Attributes(0)
.bDriveType = 1
End With

If SmartCheckEnabled(hDrive, drvNumber) Then

If IdentifyDrive(hDrive, IDE_ID_FUNCTION, drvNumber, di) = True Then

End If ‘IdentifyDrive
End If ‘SmartCheckEnabled
End If ‘SmartGetVersion
End If ‘hDrive <> INVALID_HANDLE_VALUE

Private Function IdentifyDrive(ByVal hDrive As Long, _
ByVal IDCmd As Byte, _
ByVal drvNumber As IDE_DRIVE_NUMBER, _
di As DRIVE_INFO) As Boolean

‘Function: Send an IDENTIFY command to the drive
‘drvNumber = 0-3
‘IDCmd = IDE_ID_FUNCTION or IDE_ATAPI_ID
Dim SCIP As SENDCMDINPARAMS
Dim IDSEC As IDSECTOR
Dim bArrOut(OUTPUT_DATA_SIZE – 1) As Byte
Dim cbBytesReturned As Long

With SCIP
.cBufferSize = IDENTIFY_BUFFER_SIZE
.bDriveNumber = CByte(drvNumber)

With .irDriveRegs
.bFeaturesReg = 0
.bSectorCountReg = 1
.bSectorNumberReg = 1
.bCylLowReg = 0
.bCylHighReg = 0
.bDriveHeadReg = &HA0 ‘compute the drive number
If Not IsWinNT4Plus Then
.bDriveHeadReg = .bDriveHeadReg Or ((drvNumber And 1) * 16)
End If
‘the command can either be IDE
‘identify or ATAPI identify.
.bCommandReg = CByte(IDCmd)
End With
End With

If DeviceIoControl(hDrive, _
DFP_RECEIVE_DRIVE_DATA, _
SCIP, _
Len(SCIP) – 4, _
bArrOut(0), _
OUTPUT_DATA_SIZE, _
cbBytesReturned, _
ByVal 0&) Then

di.Model = StrConv(SwapBytes(IDSEC.sModelNumber), vbUnicode)
di.SerialNumber = StrConv(SwapBytes(IDSEC.sSerialNumber), vbUnicode)

Private Function IsWinNT4Plus() As Boolean

‘returns True if running Windows NT4 or later
Dim osv As OSVERSIONINFO

If GetVersionEx(osv) = 1 Then

IsWinNT4Plus = (osv.PlatformID = VER_PLATFORM_WIN32_NT) And _
(osv.dwVerMajor >= 4)

Private Function SmartCheckEnabled(ByVal hDrive As Long, _
drvNumber As IDE_DRIVE_NUMBER) As Boolean

‘SmartCheckEnabled – Check if SMART enable
‘FUNCTION: Send a SMART_ENABLE_SMART_OPERATIONS command to the drive
‘bDriveNum = 0-3
Dim SCIP As SENDCMDINPARAMS
Dim SCOP As SENDCMDOUTPARAMS
Dim cbBytesReturned As Long

With .irDriveRegs
.bFeaturesReg = SMART_ENABLE_SMART_OPERATIONS
.bSectorCountReg = 1
.bSectorNumberReg = 1
.bCylLowReg = SMART_CYL_LOW
.bCylHighReg = SMART_CYL_HI

.bDriveHeadReg = &HA0
If Not IsWinNT4Plus Then
.bDriveHeadReg = .bDriveHeadReg Or ((drvNumber And 1) * 16)
End If
.bCommandReg = IDE_EXECUTE_SMART_FUNCTION

SmartCheckEnabled = DeviceIoControl(hDrive, _
DFP_SEND_DRIVE_COMMAND, _
SCIP, _
Len(SCIP) – 4, _
SCOP, _
Len(SCOP) – 4, _
cbBytesReturned, _
ByVal 0&)
End Function

Private Function SmartGetVersion(ByVal hDrive As Long) As Boolean

Dim cbBytesReturned As Long
Dim GVOP As GETVERSIONOUTPARAMS

SmartGetVersion = DeviceIoControl(hDrive, _
DFP_GET_VERSION, _
ByVal 0&, 0, _
GVOP, _
Len(GVOP), _
cbBytesReturned, _
ByVal 0&)
End Function

Private Function SmartOpen(drvNumber As IDE_DRIVE_NUMBER) As Long

‘Open SMART to allow DeviceIoControl
‘communications and return SMART handle

If IsWinNT4Plus() Then

SmartOpen = CreateFile(“\\.\PhysicalDrive” & CStr(drvNumber), _
GENERIC_READ Or GENERIC_WRITE, _
FILE_SHARE_READ Or FILE_SHARE_WRITE, _
ByVal 0&, _
OPEN_EXISTING, _
0&, _
0&)
Else

SmartOpen = CreateFile(“\\.\SMARTVSD”, _
0&, 0&, _
ByVal 0&, _
CREATE_NEW, _
0&, _
0&)
End If
End Function

Private Function SwapBytes(b() As Byte) As Byte()

‘Note: VB4-32 and VB5 do not support the
‘return of arrays from a function. For
‘developers using these VB versions there
‘are two workarounds to this restriction:

‘1) Change the return data type ( As Byte() )
‘ to As Variant (no brackets). No change
‘ to the calling code is required.

‘2) Change the function to a sub, remove
‘ the last line of code (SwapBytes = b()),
‘ and take advantage of the fact the
‘ original byte array is being passed
‘ to the function ByRef, therefore any
‘ changes made to the passed data are
‘ actually being made to the original data.
‘ With this workaround the calling code
‘ also requires modification:

‘ di.Model = StrConv(SwapBytes(IDSEC.sModelNumber), vbUnicode)

‘ . to .

‘ Call SwapBytes(IDSEC.sModelNumber)
‘ di.Model = StrConv(IDSEC.sModelNumber, vbUnicode)

Dim bTemp As Byte
Dim cnt As Long

For cnt = LBound(b) To UBound(b) Step 2
bTemp = b(cnt)
b(cnt) = b(cnt + 1)
b(cnt + 1) = bTemp
Next cnt

End Function
Private Sub Class_Initialize()
Dim di As DRIVE_INFO
Dim drvNumber As Long
For drvNumber = 0 To PRIMARY_MASTER ‘ To QUARTIARY_SLAVE-Получить о всех HDD
di = GetDriveInfo(drvNumber)
With di
Select Case .bDriveType
Case 0
SN = “”
DN = SN
Case 1
SN = Trim$(.SerialNumber)
DN = Trim$(.Model)
Case 2
SN = “”
DN = SN
Case Else
SN = “”
DN = SN
End Select
End With
Next
End Sub

Mizin Alex » 18.12.2004 (Сб) 22:52

Ну и раз пошла такая пьянка .
Рабочий пример определения даты BIOS под XP может найдется у кого.

cashman » 19.12.2004 (Вс) 1:18

2 Mizin Alex:
Я не силен в классах и модулях (для меня это демучий лес). Как вызвать этот код из формы. Ну типа:
Private Sub Command1_Click()
text1.text = . ‘ как это сделать при помощи твоего класса (модуля)
End Sub

Да поясни 2-й пункт NOTE – только на русском.
У меня VB5.

2 cooler:
твой первый пример показывает на “заводской номер”, а серийный.
а второй пример не пошел, начал быковать из-за “Rigth” – где твой смайлик.

areh » 19.12.2004 (Вс) 13:05

MizinAlex
твой пример как я понимаю основан на том же, что и выложенная выше прога (HDDSerial.rar)

cooler
два твоих метода выдают одинаковые результаты (как наверное и должно быть), единственная разница, один из них ставит дефис между четыремя цифрами (HEX)

итак, полученны следующие результаты:

где С, Е – SATA диски; D, F – DVD резак и виртуальный диск соответственно, G – IDE хард, H – флэшка, которая распознается как “Local Disk”

относительно соотношения с полученными ранее результатами:
при переводе из НЕХ в DEC номер диска С совпал, а у Е получен новый результат (вероятно более правильный): 2351265625

PS cashman там где счас стоит смайлик должен быть ” 8 пробел ) “

Mizin Alex » 19.12.2004 (Вс) 17:49

Cashman:
Вызываем – получаем :

Dim SerialNum As clsHDD
Set SerialNum = New clsHDD
Text1.text = SerialNum.GetName & ” ” & SerialNum.GetNum
Set SerialNum = Nothing

Измени вызов :
di.Model = StrConv(SwapBytes(IDSEC.sModelNumber), vbUnicode)

на :
Call SwapBytes(IDSEC.sModelNumber)
di.Model = StrConv(IDSEC.sModelNumber, vbUnicode)

. , а почему VB5 используешь ?

Попробуй пример HDDSerial.rar .
Пробуй ! Пиши !

Areh:
Wrote: “. твой пример как я понимаю основан на том же, что и выложенная выше прога (HDDSerial.rar)”
Да принцип я думаю похож сильно.
С ув. Alex.

marvan » 20.12.2004 (Пн) 10:43

cashman » 26.12.2004 (Вс) 2:54

2Mizin Alex
Твой код у меня пошел, но только в vb6 ” MAXTOR 6L040J2 662201924638 “, а с изменениями в vb5 отказывается, ему не нравится фомулировка:
Private Sub SwapBytes(b() As Byte) As Variant (типа: Expected: end of statement )
а без “As Variant” в этой строчке ошибку не выводит, но она появляется уже в другом месте:
di.SerialNumber = StrConv(SwapBytes(IDSEC.sSerialNumber), vbUnicode) – типа SwapBytes – должно быть Function or Variant
Меняем на Private Function SwapBytes(b() As Byte) As Variant
Результат MAXTOR 6L040J2 т.е. без серийника. Что не так.
P.S. а VB5 пользуюсь т.к. мне как новичку хелп хоть какой-то нужен.

2areh
Поясни в кратце, что такое “НЕХ” и “DEC”
а также почему ты считаешь, что 2-ой получившийся вариант более правильный.

Я уже совсем запутался, что есть что. и вытащил жесткий и списал с него все данные:

У меня прогаммы выдают 3 результата, это:
1) 662201924638 (проги: HDD_Num, HDDSerial, и код указанный Mizin Alex) – ну с этим хоть как-то понятно, его я хоть на жестком нашел, а вот другие.
2) BCCC-73FA или BCCC-73FA (проги: Serial Num, Drive и коды COOLERa)
3) -1127451654 (это из FSODrive, + одна Access база, где встроена привязка к номеру HDD).

НУ и КАКОЙ из них мне нужен?, Какой дествительно заводской и его НЕЛЬЗЯ ИЗМЕНИТЬ. А остальные тогда что (особенно из FSODrive, я пытаюсь повторить в своей проге тотже код – выдает ошибку в первой же строке. ПОЧЕМУ. ).

HDD_Num
Driver
Access Base
При запуске Базы Access удерживать “Shift” иначе база проверит ваш №HDD и не пустит вас. А там уже установите доступ в “MainForm

areh » 26.12.2004 (Вс) 10:56

HEX (hexadecimal) шестнадцатиричный
DEC (decimal) десятичный

это все относительно записи числа. думаю ты об этом слышал.

по поводу наиболее правильного, дело в том, что точно так же определяет серийник моих хардов PartitionMagic.
а ещё на днях, мне попался в руки диск Hitachi, на котором SN был указан именно в таком виде.

Mizin Alex » 26.12.2004 (Вс) 21:44

cashman » 27.12.2004 (Пн) 2:12

2areh
Все решился буду привязывать прогу к жесткому, используя 2-ой способ, т.е. BCCC-73FA или BCCC-73FA (установил у себя PartitionMagic – УБЕДИТЕЛЬНО).

2Mizin Alex
Спасибо, НО. Нормальные герои всегда идут в обход. Буду использовать вышеуказанный способ.
P.S. у меня итак стоит VB5 (я в нем программирую) и VB6 (для просмотра исходников ваших, сейчас в основном идут сделанные в VB6, которые не открываются в VB5). Но когда VB овою лучше, то перейду на VB6 – в нем возможностей больше.
“Никогда не останавливайся на достигнутом. “

Последный вопрос, а можно взломать этот серийник ( BCCC-73FA ), т.е. может есть какая-нибудь утилита, которая меняет его на какой хочешь.

Mizin Alex » 27.12.2004 (Пн) 20:59

Cashman :
Wrote:”Последный вопрос, а можно взломать этот серийник (BCCC-73FA), т.е. может есть какая-нибудь утилита, которая меняет его на какой хочешь. ”

Уж не знаю откуда там берется BCCC-73FA (исходник не смотрел) ,но я думаю убедительно в моем примере то , что серийник совпадает с серийником HDD , а уж он то прописан в микропрограмме я полагаю .

Как узнать всю информацию о жестком диске в Windows


При сборке нового ПК или покупке ноутбука мы обычно помним модель процессора, объем ОЗУ и название видеокарты. Но вот о накопителе мы максимум помним его объем — а ведь бывает нужно узнать его модель и версию прошивки (актуально для SSD).

Для того, чтобы узнать информацию о накопителе, нам понадобится командная строка и команда wmic diskdrive get . Дальнейшие параметры могут быть различными, весь список выглядит так:

  • Availability
  • BytesPerSector
  • Capabilities
  • CapabilityDescriptions
  • Caption
  • CompressionMethod
  • ConfigManagerErrorCode
  • ConfigManagerUserConfig
  • CreationClassName
  • DefaultBlockSize
  • Description
  • DeviceID
  • ErrorCleared
  • ErrorDescription
  • ErrorMethodology
  • FirmwareRevision
  • Index
  • InstallDate
  • InterfaceType
  • LastErrorCode
  • Manufacturer
  • MaxBlockSize
  • MaxMediaSize
  • MediaLoaded
  • MediaType
  • MinBlockSize
  • Model
  • Name
  • NeedsCleaning
  • NumberOfMediaSupported
  • Partitions
  • PNPDeviceID
  • PowerManagementCapabilities
  • PowerManagementSupported
  • SCSIBus
  • SCSILogicalUnit
  • SCSIPort
  • SCSITargetId
  • SectorsPerTrack
  • SerialNumber
  • Signature
  • Size
  • Status
  • StatusInfo
  • SystemCreationClassName
  • SystemName
  • TotalCylinders
  • TotalHeads
  • TotalSectors
  • TotalTracks
  • TracksPerCylinder

При этом не все параметры могут работать с вашим накопителем и версией системы. Если вы хотите узнать самые важные параметры диска (его состояние, название модели, версию прошивки и серийный номер), то можете воспользоваться готовой командой wmic diskdrive get Model, SerialNumber, FirmwareRevision, Status :

Существует немало ситуаций, когда пользователю компьютера необходимо получить информацию об установленных жестких дисках. Сделать это можно различными способами — средствами операционной системы, при помощи сторонних приложений и без всего этого. Рассмотрим вопрос более подробно.

В операционных системах Windows предусмотрены все необходимые средства для получения различной информации о жестком диске. Начнем с самого простого.

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

  • Чтобы запустить “Диспетчер устройств”, кликните правой кнопкой мыши по значку “Мой компьютер” или “Этот компьютер” и выберите пункт “Свойства”. В левом верхнем углу открывшегося окна найдите и кликните по элементу “Диспетчер устройств”.
  • На экране отобразится список с различными категориями устройств. Нас интересует раздел “Дисковые устройства”. Раскройте его.
  • После последнего действия на экране будут отображены названия моделей подключенных к компьютеру жестких дисков.

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

При помощи системного приложения “Управление компьютером” можно определить не только название винчестера, но и его суммарный объем, количество и название разделов (локальных дисков):

  • Откройте “Панель управления” из меню “Пуск” или другим способом.
  • Перейдите в подраздел “Система и безопасность”, затем кликните по элементу “Администрирование”.
  • Откроется новое окно со списком системных утилит. Найдите среди них и запустите приложение “Управление компьютером”.
  • Откроется еще одно окно. В левой его стороне раскройте раздел “Запоминающие устройства”, затем кликните по элементу “Управление дисками”. Должно получиться так:
  • В нижней части окна будет представлены номера жестких дисков (“Диск 0”, “Диск 1”, “Диск 2” и т.д.) и имеющиеся на нем разделы. На изображении выше показана информация о двух винчестерах.
  • Чтобы узнать модель представленного жесткого диска, нужно кликнуть правой кнопкой мыши по его названию в системе (например, “Диск 0”), затем выбрать пункт “Свойства”. Откроется небольшое окошко. Во вкладке “Общие” будет приведено название модели выбранного винчестера.

В некоторых ситуациях определить модель винчестера при помощи двух предыдущих способов оказывается невозможным. Обычно это наблюдается при наличии вирусов на компьютере либо при отключении некоторых системных служб, отвечающих за работу этих приложений. В таких случаях может помочь командная строка (консоль) Windows:

  • Чтобы открыть консоль Windows, нажмите одновременно клавиши “Win+R”, затем введите в окно “cmd” и нажмите “Enter”.
  • Далее впишите в окно консоли команду “wmic”, нажмите клавишу ввода.
  • Затем вновь впишите в командную строку — “diskdrive list brief”, нажмите “Enter”.
  • На экран будет выведен небольшой список:
  • В колонке “Caption” можно узнать название моделей жестких дисков.
  • Если нужно уточнить суммарный объем винчестера в гигабайтах, то число (количество байт) из колонки “Size” следует 3 раза разделить на 1024. Например, диск “ST3160215AS” имеет емкость в 160039272960 байт, т.е. 160039272960/1024/1024/1024 = 149,04 Гб.

В интернете можно найти массу приложений, позволяющих получить самую различную информацию о жестких дисках, включая такие данные о нем, которые затруднительно или даже невозможно получить средствами операционной системы. Одна из таких программ — Ontrack EasyRecovery. Вообще программа предназначена для восстановления утерянных данных с жесткого диска, но с ее помощью можно получить довольно подробную информацию.

  • Откройте приложение Ontrack EasyRecovery. На первой же странице нажмите на кнопку “Продолжить”.
  • На следующей странице программы выберите элемент “Жесткий диск” и вновь нажмите на кнопку “Продолжить”.
  • На экране отобразится таблица “Найдены диски и тома”, в которой можно будет посмотреть модель винчестера и присутствующие на нем разделы.
  • Кликните по названию жесткого диска правой кнопкой мыши, затем выберите пункт “Информация о диске”.
  • Откроется новое окно, в котором будут приведены все важные данные о винчестере. Например:

Если на компьютере отсутствует операционная система или она по каким-либо причинам перестала исправно работать, модель винчестера можно узнать при помощи BIOS. Данная микропрограмм встроена в материнскую плату ПК, потому она способна работать и без всякой ОС. Для получения модели жесткого диска этим способом следуйте инструкции:

  • Выключите компьютер.
  • Вновь включите ПК и сразу же нажимайте клавишу “F2” или “Delete”. На экране компьютера должен будет отобразиться пользовательский интерфейс BIOS. Если этого не происходит, возможно, потребуется нажимать другую клавишу (можно уточнить на сайте производителя материнской платы).
  • Название модели жесткого диска может быть приведено в первой же вкладке интерфейса BIOS. Например:
  • Если на главной странице нужная информация отсутствует, то ее следует искать во вкладке “Boot”, “Advanced” или другой. Просто пройдитесь по всем вкладкам интерфейса BIOS.

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

Утилита для просмотра полной информации о жестком диске

Хотите узнать полную информацию о Вашем жестком диске? Тогда Вам нужна программа CrystalDiskInfo, которая покажет такую информацию о ЖД как:

  • версию прошивки;
  • серийный номер;
  • интерфейс;
  • режим передачи;
  • буквы тома;
  • стандарт;
  • возможности;
  • буфер данных;
  • объем NV-кэша;
  • скорость вращения;
  • число включений и общее время работы.
  • Всю эту информацию можно изменить “под себя” на вкладке Сервис, в ней так же можно установить гаджет.

    Помимо этого, программа выводит параметры атрибутов системы самодиагностики S.M.A.R.T. (ошибки чтения, производительность, запуски/остановки шпинделя, время раскрутки, количество циклов включения/выключения, ошибки секторов и др.).

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

    Окно программы выглядит так:

    интерфейс можно поменять из трех предложенных, но толку от этого будет мало.
    На скрине видно, что она уже обнаружила одну тревогу – это нестабильные сектора. Здесь следует отметить, что атрибут C5 (который присутствует в пояснении) – Current Pending Sector Count – это количество секторов, которые были помечены как кандидаты на замену (ремап), но они не являются битыми , это просто подозрительный сектор.

    Программа переведена на множество языков, включая русский. Она абсолютно бесплатна и не содержит рекламы. Имеет портабельную (переносную) версию, которая не требует установки и можно запускать напрямую с флешки.

    Скачать утилиту для получения информации о жестких дисках можно с

    Оставьте первый комментарий

    Оставить комментарий

    Ваш электронный адрес не будет опубликован.