Функция получает сигнатуру (уникальный идентификатор) жесткого диска с использованием WMI
Вызов функции обычно занимает от 0,5 до 1 секунды
Function HardwareID() As String ' © 2015 ExcelVBA.ru ' Функция возвращает сигнатуру HDD ' работает на 80% компьютеров (протестировано на тысячах разных компьютеров) On Error Resume Next: Dim v&, sv$, obj As Object, DriveID$, PartName$, DriveLetter$ DriveLetter$ = Environ("SystemDrive"): If Not DriveLetter$ Like "[A-Z]:" Then DriveLetter$ = "C:" With GetObject("winmgmts:") For Each obj In .ExecQuery("ASSOCIATORS OF {Win32_LogicalDisk.DeviceID='" & DriveLetter$ & "'} WHERE AssocClass = Win32_LogicalDiskToPartition"): PartName$ = obj.DeviceID: Next For Each obj In .ExecQuery("ASSOCIATORS OF {Win32_DiskPartition.DeviceID='" & PartName$ & "'} WHERE AssocClass = Win32_DiskDriveToDiskPartition"): DriveID$ = obj.DeviceID: Next For Each obj In .ExecQuery("SELECT * FROM Win32_DiskDrive WHERE DeviceID='" & Replace(DriveID$, "\", "\\") & "'"): v& = Val(obj.Signature): Next End With If v& = 0 Then HardwareID = "нет данных" Else HardwareID = CStr(v) End Function
Пример использования:
Sub Get_HDD_Signature() ' макрос для вызова функции HardwareID CompaterID = HardwareID MsgBox CompaterID End Sub
Комментарии
Отправить комментарий