powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Получить код экземпляра устройство (серийный номер флэшки)
40 сообщений из 40, показаны все 2 страниц
Получить код экземпляра устройство (серийный номер флэшки)
    #35818018
sadem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток всем! Прошу прощения за избитую наверно уже тему (про серийный номер), но в поисковике ничего дельного не нашел, в т.ч. и на этом сайте. Может здесь кто, что подскажет.
То, что выдали мне поисковики - это порядка 30 примеров одного и того же, но в разных интерпретациях. Суть этих пример - они получают не реальный серийный номер USB устройства, а всего лишь номер тома, который при форматировании меняется! Их можно свести к трем:
1. Dim FSO, DRV
Set FSO = CreateObject("Scripting.FileSystemObject")
Set DRV = FSO.GetDrive("E:")
MsgBox Hex$(DRV.SerialNumber)
Set DRV = Nothing
Set FSO = Nothing
2. С использованием GetVolumeInformation
3. Поиск устройств в реестре, но при этом в реестре сохраняются все старые флэшки которые были когда-то вставлены в данный ПК (хотя, наверно, в этом примере выдается уже реальный s/n).

Но повторюсь - они выдают серийный номер тома , а нужен серийный номер устройства (который при форматировании не измеется).

Как получить серийный номер (если возможно) дискового устройства по букве его тома?

Или подскажите как получить Vendor ID (Код экземпляра устроства USB). Здесь уж напрямую зашит серийник и его можно посмотреть через Диспетчер устройств->Дисковые устройства->USB Flash Drive (в свойствах).

Видел на Delphi что-то подобное реализовывали, можно ли считать Vendor ID устройства в VB6?
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #35818033
Фотография Restavraciya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Этот код возвращает то что в свойствах юсб устройства (диспетчер-дисковые-...)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Dim obj, objs, buf, PnPID

' Get the PnPDevice ID
Set objs = GetObject("winmgmts:").InstancesOf("Win32_DiskDrive")
For Each obj In objs
      If obj.InterfaceType = "USB" Then
            'buf = "Model: " & obj.Model & vbcr
            'buf = buf & "PnP Device ID: " & obj.PnPDeviceID
            PnPID = obj.PnPDeviceID
            'msgbox(buf)
      End If
Next

' fix up the PnPDevice ID to make it suitable for comparing against the Association
PnPID = Replace(PnPID, "\", "\\") & Chr( 34 )

' Use WMI associations to pair up USBContoller and PnPEntity
Set objs = GetObject("winmgmts:").InstancesOf("Win32_USBControllerDevice")
For Each obj In objs
      If Right(obj.Dependent, Len(PnPID)) = PnPID Then
            Debug.Print (PnPID & vbCr & obj.Dependent & vbCr & obj.Antecedent)
      End If
Next
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #35818036
Фотография Restavraciya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зы: то что в коде экземпляра устройства
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #35818105
sadem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Restavraciya, могу только сказать "БРАВО!" Кратко и по делу. Именно то, что нужно. Огромное спасибо!
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36177875
apollo25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Restavraciya[Этот код возвращает то что в свойствах юсб устройства (диспетчер-дисковые-...)]
Здравствуйте, Уважаемый!
Не могли бы Вы растолковать мне, незнакомому с VB, как запустить этот код в WinXP SP3.
Я сохранил код в EmEditor-е как PnPID.vbs. Запускаю оный двумя щелчками ЛКМ, а он выдает:
Windows Script Host
Сценарий: D:\Admin\Apollo\General\Hardware\PCIDev\PnPID\PnPID.vbs
Строка: 21
Символ: 13
Oшибкa: Oбъeкт нe пoддepживaeт этo cвoйcтвo или мeтoд: 'Debug.Print'
Кoд: 800A01B6
Иcтoчник: Oшибкa выпoлнeния Microsoft VBScript

Слыхал, что есть разный VB (VB, VBA, VBS...).
Может по этому скрипт у меня не работает? Что ему не хватает?
Ответьте, пожалуйста! Заранее спасобо!
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36177897
sadem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
apollo25, Debug.Print - это команда компилятору в VB, VBS ее не понимает. Попробуй более сокращенный код переделать:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
    Set OBJs = GetObject("winmgmts:").InstancesOf("Win32_DiskDrive")
    For Each OBJ In OBJs
        If OBJ.InterfaceType = "USB" Then
            SN = OBJ.PnPDeviceID
            Model = OBJ.Model
        End If
    Next
    Set OBJs = Nothing

Здесь без оператора вывода, все остальное добавляешь сам.
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36180037
apollo25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sadem
Здесь без оператора вывода, все остальное добавляешь сам.
Благодарю за помощь, Уважаемый!
Но... я же писал..."незнакомому с VB", далек я от написания скриптов, к сожалению.
Не могли бы Вы указать что на что заменить, куда этот кусок добавить, как для тех, кто в танке.
Буду очень благодарен!
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36783192
knsFear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
UP. Как узнать букву(метку) устройства?
Заранее спасибо
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36783194
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
knsFearUP. Как узнать букву(метку) устройства?
1) Так букву или метку?
2) Исходя из каких данных?
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36783237
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apollo25,
код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
'*******************************************************************
' Имя: usb.vbs
' Язык: VBScript                                                   
' Описание: Класс Win32_DiskDrive предоставляет сведения о дисководах                             
'*******************************************************************
'********************Переменные**************************
Dim obj, objs, buf, PnPID ,strtemp
'**********************Начало********************************
Set objs = GetObject("winmgmts:").InstancesOf("Win32_DiskDrive")
For Each obj In objs
    If obj.InterfaceType = "USB" Then
        PnPID = obj.PnPDeviceID
	End If
Next
PnPID = Replace(PnPID, "\", "\\") & Chr( 34 )
Set objs = GetObject("winmgmts:").InstancesOf("Win32_USBControllerDevice")
For Each obj In objs
    If Right(obj.Dependent, Len(PnPID)) = PnPID Then
            strtemp= strtemp & PnPID & vbCr & obj.Dependent & vbCr & obj.Antecedent
    End If
Next
MSGBOX strtemp ' выводим сообщение
'**********************Конец***************************************
'.SystemName 'имя компьютера
'.Caption 'наименование устройства
'.Model 'модель, указанная производителем
'.Description 'описание устройства
'.DeviceID 'идентификатор устройства
'.PNPDeviceID 'идентификатор устройства Plug-and-Play
'.Manufacturer 'производитель
'.Index 'номер диска (если 0xFF - не отображает физический диск)
'.InterfaceType 'тип интерфейса (IDE, SCSI)
'.MediaType 'тип носителя (Removable media, Fixed hard disk и т.д.)
'.SCSIBus 'номер шины SCSI
'.SCSILogicalUnit 'номер SCSI устройства
'.SCSIPort 'номер порта SCSI
'.SCSITargetId 'идентификационный номер SCSI
'.TotalHeads 'количество головок
'.BytesPerSector 'количество байт в секторе
'.SectorsPerTrack 'количество секторов на дорожке
'.TracksPerCylinder 'количество дорожек в цилиндре
'.TotalCylinders 'количество цилиндров
'.TotalSectors 'общее количество секторов
'.TotalTracks 'общее количество дорожек
'.Size 'размер диска (по количеству цилиндров, дорожек, секторов и размеру сектора)
'.Partitions 'количество разделов на диске

если лень копировать , файл приложил)
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36808614
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05adm,

Делаю так:
Пуск Наведя на Мой компьютер правой клавишей мыши нажимаю на Управление, затем нажимаю на управление дисками и вижу нижеследующую картинку: 10 столбцов, но относительно флешки Кингстон, которая вставлена в гнездо разъёма, нет столбца: Vendor ID (Код экземпляра устроства USB)???
Или я что то не то делаю?????
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36813984
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05adm,
Выполняя скрипт от 10 авг 10, 05:50 получаю МСГ бокс, который выводит три строки:
1 строка, это Код экземпляра устройства
USBSTOR\\DISK&VEN_KINGSTON&PROD_DT_101_II&REV_1.00\\001D0F0CAABFF9A145A00DAC&0"
Это значение можно посмотреть: Мой компьютер - Правая клавиша мыши - Свойства - Оборудование - Диспетчер устройств - Дисковые устройства, выбираем, например Kingston DT 101 II USB Device. Выделив его, нажать Свойства
Код экземпляра устройства

2 и 3 строку как закомментировать ???????????????????????

\\PRIVATE-1598B4D\root\cimv2:Win32_PnPEntity.DeviceID="USBSTOR\\DISK&VEN_KINGSTON&PROD_DT_101_II&REV_1.00\\001D0F0CAABFF9A145A00DAC&0"


\\PRIVATE-1598B4D\root\cimv2:Win32_USBController.DeviceID="PCI\\VEN_8086&DEV_3A3C&SUBSYS_50028086&REV_00\\3&11583659&0&D7"

И если нужен только Код экземпляра устройства делаем так, имеется ввиду макрос в сообщении от 10 авг 10, 05:50, а оконцовка такая?????

Код: plaintext
1.
2.
3.
4.
5.
6.
For Each obj In objs
If Right(obj.Dependent, Len(PnPID)) = PnPID Then
Код_экземпляра_устройства= strtemp & PnPID & vbCr & obj.Dependent & vbCr & obj.Antecedent
Exit Sub
End If
Next
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36814082
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Каждую строчку комментировать - нет смысла. И так ясно из контекста задачи, что возвращается
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36814095
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VSVLAD, рад за Вас, что нет для Вас смысла и Вам всё понятно, но для меня вопрос не снят
Не знаю поэтому и спрашиваю, подскажите скажу спасибо, нет нет
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36814302
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,
ну у вас там цикл ,что хотите комментировать че то я не понял?
скорее всего вам так надо
Код: plaintext
1.
Код_экземпляра_устройства= Код_экземпляра_устройства & PnPID & vbCr & obj.Dependent & vbCr & obj.Antecedent
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36817008
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05adm, у Вас ход мыслей интересный, в Вашем коде от 10 авг 10, 05:50 имеем два цикла и PnPID во втором цикле будет обрабатывать последнее PnPID первого цикла

Вот нижеследует код, получаю после его прохождения ответ
Устройства = 6
USB_устройства = 5
Но я то знаю, что USB устройств реально подсоединённых к компьютеру 1, как узнать строго подсоединённые USB устройства???????????
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
'класс Win32_DiskDrive предоставляет сведения о дисководах
Dim obj, objs, buf, PnPID, strtemp
Set objs = GetObject("winmgmts:").InstancesOf("Win32_DiskDrive")
Устройства =  0 
USB_устройства =  0 
For Each obj In objs
Устройства = Устройства +  1 
Тип_устройства = obj.InterfaceType 'типы устройства бывают: IDE, USB
If obj.InterfaceType = "USB" Then
USB_устройства = USB_устройства +  1 
PnPID = obj.PnPDeviceID
End If
Next
Потом двинусь дальше
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36817015
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, а SATA устройства не подсчитает???
Если да то как
Я так понимаю жесткие диски и дисководы будет считать в зависимости от интерфейса подключения IDE или SATA????
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36817101
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,
Код: plaintext
'класс Win32_DiskDrive предоставляет сведения о дисководах
видимо SATA тоже будет поддерживать
>USB_устройства = 5
ну это нормально , у вас там типо концентратор стоит наверно и еще может ерунда какая нибудь
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36817109
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05adm, ответили на всё кроме главного
USB_устройства = 5
Но я то знаю, что USB устройств реально подсоединённых к компьютеру 1, как узнать строго подсоединённые USB устройства???????????
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36817153
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05adm,
проверил:
Тип_устройства = obj.InterfaceType 'типы устройства бывают: IDE, USB, SATA но SATA определяет как IDE????????????????? и как же уточнить и разграничить????
Узнал опытгым путём показываеи диск Макстор как иде но я точно знаю, что он сата не поленился крышку окрыл так и есть!!!!
А еще есть вот эти забыл как абревиатура, новые твёрдотельные с ними как????
Вопрос на вопросе
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36817393
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
On Error Resume Next
 
Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20
 
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_DiskDrive", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
 
For Each objItem In colItems
	strtemp=strtemp+ "_______________________________________________"+ chr( 13 )
	strtemp=strtemp+ "_______________________________________________"+ chr( 13 )
        strtemp=strtemp+ "Caption: " & objItem.Caption + chr( 13 )
        strtemp=strtemp+ "InterfaceType: " & objItem.InterfaceType + chr( 13 )
        strtemp=strtemp+ "DeviceID: " & objItem.DeviceID + chr( 13 )
        strtemp=strtemp+ "Name: " & objItem.Name + chr( 13 )
        strtemp=strtemp+ "Status: " & objItem.Status + chr( 13 )
        strtemp=strtemp+ "_______________________________________________"+ chr( 13 )
	strtemp=strtemp+ "_______________________________________________"+ chr( 13 )
Next
WScript.Echo strtemp
попробуйте этот код
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36817514
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05adm,
1.чуть переделал для русскоязычных
2.добавил objItem.PnPDeviceID
3.Что такое WScript.Echo strtemp?????????????????
4.Думал objItem.Status решит задачу если ОК значит подсоединено, если не ОК значит не подсоединено, так как же узнать все реально подсоединённые устройства?????????????

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
On Error Resume Next
 
Const wbemFlagReturnImmediately = &H10
Const wbemFlagForwardOnly = &H20
 
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_DiskDrive", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
 
For Each objItem In colItems
    strtemp = strtemp + "_______________________________________________" + Chr( 13 )
    strtemp = strtemp + "_______________________________________________" + Chr( 13 )
    strtemp = strtemp + "Заголовок устройства: " & objItem.Caption + Chr( 13 )
    strtemp = strtemp + "Тип устройства: " & objItem.InterfaceType + Chr( 13 )
    strtemp = strtemp + "ID устройства: " & objItem.DeviceID + Chr( 13 )
    strtemp = strtemp + "PnP ID устройства: " & objItem.PnPDeviceID + Chr( 13 )
    strtemp = strtemp + "Имя устройства: " & objItem.Name + Chr( 13 )
    strtemp = strtemp + "Состояние устройства: " & objItem.Status + Chr( 13 )
    strtemp = strtemp + "_______________________________________________" + Chr( 13 )
    strtemp = strtemp + "_______________________________________________" + Chr( 13 )
Next

Selection.TypeText Text:=strtemp
WScript.Echo strtemp
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36817536
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05adm,
И потом когда узнаю подсоединено устройство или нет как узнать под какой оно буквой в системе?????????
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36829168
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05adm,
'обнаружение подключенных на компьютере USB накопителей сделал, подскажите пожалуйста как определить ID устройства

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
Dim objWMI, objCollection, objItem, objWSNet
Dim objLogicalDisks, objLD, objPartitions, objPart
Dim strComputer, strTemp
strComputer = "."
Set objWMI = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" & strComputer & "\root\cimv2")
Set objCollection = objWMI.ExecQuery("SELECT * FROM Win32_LogicalDisk WHERE DriveType=2")
Количество_подсоединённых_USB_устройств =  0 
For Each objItem In objCollection
Set objLogicalDisks = objWMI.ExecQuery("ASSOCIATORS OF {Win32_LogicalDisk.DeviceID=""" & _
objItem.DeviceID & """} WHERE AssocClass=Win32_LogicalDiskToPartition")
For Each objLD In objLogicalDisks
Set objPartitions = objWMI.ExecQuery("ASSOCIATORS OF {Win32_DiskPartition.DeviceID=""" & _
objLD.DeviceID & """} WHERE AssocClass=Win32_DiskDriveToDiskPartition")
For Each objPart In objPartitions
strTemp = strTemp & objItem.DeviceID & " => " & objPart.Caption & " (Диск " & objPart.Index & ")" & vbNewLine
Буква_съемного_диска = objItem.DeviceID
Имя_съёмного_диска = objPart.Caption
Порядковый_номер_накопителя_на_момент_запроса = objPart.Index
Имя_съёмного_диска_его_буква = objPart.Caption & " " & objItem.DeviceID
Количество_подсоединённых_USB_устройств = Количество_подсоединённых_USB_устройств +  1 
Next
Set objPart = Nothing
Set objPartitions = Nothing
Next
Set objLD = Nothing
Set objLogicalDisks = Nothing
Next
Set objItem = Nothing
Set objCollection = Nothing
Set objWMI = Nothing

If Len(strTemp) =  0  Then MsgBox$ "На компьютере USB накопителей не обнаружено", vbOKOnly, "Отчёт" Else MsgBox$ strTemp, vbOKOnly, "Отчёт"
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36829565
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,

круто, даже в Excel код работает.
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36829575
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если указать DriveType=3, то покажет информацию о жёстких дисках.
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36829598
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Djon Player, не пойму к чему Ваше сообщение, в код от вчера 19:42 просто надо добавить возможности из кода от 29 авг 10, 07:16
Что-то я крутил его и так и сяк у меня не получилось
То есть букву диска знаю, его имя знаю, нужна
переменная PnPDeviceID подсоединённого к компьютеру USB устройства
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36829601
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
то есть соединить эти два кода нет проблем, просто не знаю как это сделать оптимально, чтобы ничего лишнего
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36829962
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,

Да это я так больше для себя написал, код заинтересовал, может в будущем пригодиться.
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36830001
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,
Код: plaintext
objItem.DeviceID
а это не id устройства ?
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36830028
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05adm,
в скрипте представленном мною objItem.DeviceID это Буква_съемного_диска = objItem.DeviceID, потому что это присваивается в цикле:
Код: plaintext
1.
2.
3.
For Each objPart In objPartitions
Буква_съемного_диска = objItem.DeviceID
Next
А мне нужно присвоить PnP_ID_устройства = objItem.PnPDeviceID
Вроде не сложно, но надо в цикле
Код: plaintext
1.
2.
3.
For Each objItem In colItems
PnP_ID_устройства = objItem.PnPDeviceID
Next
И предварительно создать объект
Код: plaintext
1.
2.
Set colItems = objWMI.ExecQuery("Select * from Win32_DiskDrive", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)

Вроде всё просто, но у меня не получилось
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36830174
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с ума сойти 2600 просмотров и 30 ответов, верный ответ:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
'обнаружение подключенных на компьютере USB накопителей, их ID
Dim objWMI, objLogicalDisks, objLD
Dim objPartitions, objPart, objDrives, objDrive
Dim strComputer, strTemp
strComputer = "."
Set objWMI = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" & strComputer & "\root\cimv2")
Set objLogicalDisks = objWMI.ExecQuery _
                   ("SELECT * FROM Win32_LogicalDisk WHERE DriveType=2")
For Each objLD In objLogicalDisks
   Set objPartitions = objWMI.ExecQuery _
                           ("ASSOCIATORS OF {Win32_LogicalDisk.DeviceID=""" & _
                           objLD.DeviceID & _
                           """} WHERE AssocClass=Win32_LogicalDiskToPartition")
   For Each objPart In objPartitions
       Set objDrives = objWMI.ExecQuery _
                           ("ASSOCIATORS OF {Win32_DiskPartition.DeviceID=""" & _
                           objPart.DeviceID & _
                           """} WHERE AssocClass=Win32_DiskDriveToDiskPartition")
       For Each objDrive In objDrives
           strTemp = strTemp & objLD.DeviceID & " => " & objDrive.Caption & " (Диск " & objDrive.Index & ")" & vbNewLine & _
                       "PnPDeviceID накопителя = " & objDrive.PnPDeviceID & vbNewLine & vbNewLine
       Next
       Set objDrive = Nothing
       Set objDrives = Nothing
   Next
   Set objPart = Nothing
   Set objPartitions = Nothing
Next
Set objLD = Nothing
Set objLogicalDisks = Nothing
Set objWMI = Nothing

If Len(strTemp) =  0  Then MsgBox$ "На компьютере USB накопителей не обнаружено", vbOKOnly, "Отчёт" Else MsgBox$ strTemp, vbOKOnly, "Отчёт"

...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36830452
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,
я верю в вас)
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36830514
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admЦипихович Эндрю,
я верю в вас) +1
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36830685
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05adm,
А вот ещё в цикле

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Set objs = GetObject("winmgmts:").InstancesOf("Win32_USBControllerDevice")
For Each obj In objs
   If Right(obj.Dependent, Len(PnPID)) = PnPID Then
           пер1= obj.Dependent
           пер2= obj.Antecedent
   End If
Next

в переменную пер1 попадает например это
\\PRIVATE-1598B4D\root\cimv2:Win32_PnPEntity.DeviceID="USBSTOR\\DISK&VEN_KINGSTON&PROD_DT_101_II&REV_1.00\\001D0F0CAABFF9A145A00DAC&0"

в переменную пер2 попадает например это
\\PRIVATE-1598B4D\root\cimv2:Win32_USBController.DeviceID="PCI\\VEN_8086&DEV_3A3C&SUBSYS_50028086&REV_00\\3&11583659&0&D7"
что это такое? имеется оно в USB устройствах?
И как этот цикл добавить в Ваш скрипт от вчера, 15:02??
Спасибо
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36830686
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,
ой ошибся
в Ваш скрипт от вчера, 15:02??
в мой конечно!!! скрипт от вчера, 15:02??
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36834592
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разобрался
\\PRIVATE-1598B4D\root\cimv2:Win32_PnPEntity.DeviceID="USBSTOR\\DISK&VEN_KINGSTON&PROD_DT_101_II&REV_1.00\\001D0F0CAABFF9A145A00DAC&0"
Идентификатор накопителя

\\PRIVATE-1598B4D\root\cimv2:Win32_USBController.DeviceID="PCI\\VEN_8086&DEV_3A3C&SUBSYS_50028086&REV_00\\3&11583659&0&D7"
Идентификатор контроллера, через который в момент запроса управлялся (был физически подключен) накопитель
Но они меня не интерисуют.
Я же правильно понял, например купил флешку, узнал её идентификатор и записал на неё прогу, продал эту флешку, поставил в проге условие
если есть флешка с ID таким то то, взять с неё файл такой то и далее ...
Если нет такой флешки отдыхать, так????
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36839803
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только из последнего поста я понял к чему вся эта канитель, думал, что хотите что-то наподобие аиды или эвереста сделать, а оказывается речь о защите программного продукта с привязкой к флешке. Интересное решение.
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36840833
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Djon Player, только есть юзеры, которые говорят следующее:
Бесполезное занятие, т.к. указанный идентификатор - вовсе не уникален: для двух накопителей одной и той же модели он будет одинаковым.
В этом смысле гораздо привлекательнее выглядит свойство SerialNumber класса Win32_DiskDrive. Однако и здесь есть по крайней мере два "подводных камня":
- свойство реализовано в модели WMI только начиная с Win Vista;
- есть немало экземпляров оборудования, у которых серийного номера либо нет, либо он не уникален
Насколько это справедливо я не знаю???????????
...
Рейтинг: 0 / 0
Получить код экземпляра устройство (серийный номер флэшки)
    #36842057
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю, ищущий да найдёт. Думаю найдёте со временем правильное решение.
Кстати во флешках наверно так-же вшита и инфа о дате выпуска, дополнительно к ней привязываться.
...
Рейтинг: 0 / 0
40 сообщений из 40, показаны все 2 страниц
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Получить код экземпляра устройство (серийный номер флэшки)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]