Форум программистов, компьютерный форум, киберфорум
Delphi: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
1 / 1 / 0
Регистрация: 20.10.2017
Сообщений: 32

Определить аппаратный серийный номер флешки

18.12.2017, 13:54. Показов 5868. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как определить аппаратный серийный номер флешки, именно НЕ серийный номер тома. В интернете масса вариантов но все они именно на определение номера тома. Буду благодарен если появится решение.

Добавлено через 12 часов 8 минут
Многоуважаемые делфисты,на просторах тырнета не нашел ни одного рабочего варианта получения аппаратного серийника, можете мне пояснить как такое может быть, все стандартные функции Delphi могут получить только серийник тома? То, что реалезуемо в десяти строках в batнике, не может реализоваться в языке программирования???? На СИ подобных средах программирования так,же легко реализуемо. Может кто-то сталкивался с подобной необходимостью. Только не надо советовать отказываться от мертвого языка (программирования), как советовали на одном из форумов.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.12.2017, 13:54
Ответы с готовыми решениями:

Определить заводской серийный номер винчестера
как можно определить заводской серийный номер винчестера для delphi

Определить серийный номер сетевой карточки программно
как программно узнать серийный номер сетевой карточки?

Аппаратный серийный номер флешки (как долго я искал)
нашел пример, которая вытаскивает аппаратный серийный номер флешки (наконец-то) :p не постесняюсь выложить код. Честно говоря у меня было...

13
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
19.12.2017, 01:53
Цитата Сообщение от sonyk Посмотреть сообщение
То, что реалезуемо в десяти строках в batнике
Если у вас есть код такого батника, то что вам мешает получить нужные данные с его помощью?
P.S. Хотя мне очень хотелось бы посмотреть код такого батника, который получает "аппаратный серийный номер флешки".

Не по теме:


"Царь
Исхитрись-ка мне добыть
То-Чаво-Не-может-быть!
Запиши себе названье,
Чтобы в спешке не забыть!


Ну а если серьёзно, то никому нафиг не нужен этот серийник!
0
19.12.2017, 11:14

Не по теме:


Цитата Сообщение от northener Посмотреть сообщение
никому нафиг не нужен этот серийник!
ну не скажи, делали наколенную систему авторизации по серийному номеру флэшки

0
1 / 1 / 0
Регистрация: 20.10.2017
Сообщений: 32
19.12.2017, 19:44  [ТС]
Пример батника определяет съемные и локальные диски. Как его прикрутить к делфи?
Windows Batch file
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
@echo off&:: by Al
Setlocal EnableDelayedExpansion EnableExtensions
Echo.
::Џ®«гз*Ґ¬ PNPDeviceID Ё PhysicalDrive Name гбва®©бвў, Ї®¤Є«озҐ**ле Ї® Ё*вҐа䥩бг USB
echo ЏҐаҐзҐ*м cꥬ*ле **Є®ЇЁвҐ«Ґ©:
echo.
For /F "Skip=2 Tokens=2-4 delims=," %%i In (
  'WMIC DiskDrive Where InterfaceType^="USB" Get Name^,PNPDeviceID^,Model /Value /format:csv 2^>nul'
) do (
    Set AtLeastOneDevice=true
    Call :Get_USB_SN "%%k" Device_SN
    Call :GetPartition "%%j" Drives
    Echo Model: %%i
    Echo %%j
    Echo Disk^(s^):     !Drives!
    Echo Device S/N:         "!Device_SN!"
    Echo.
)
if not defined AtLeastOneDevice Echo ‘ꥬ*ле USB **Є®ЇЁвҐ«Ґ© *Ґ ®Ў**а㦥*®.
Echo.
Echo ЏҐаҐзҐ*м ¦ҐбвЄЁе ¤ЁбЄ®ў:
Echo.
For /F "Skip=2 Tokens=2-4 delims=," %%i In (
  'WMIC DiskDrive Where "InterfaceType^!^='USB'" Get Name^,PNPDeviceID^,Model /Value /format:csv'
) do (
    Call :GetPartition "%%j" Drives
    Call :Get_HDD_SN "%%j" Device_SN
    Echo Model: %%i
    Echo %%j
    Echo Disk^(s^):     !Drives!
    Echo Device S/N:         "!Device_SN!"
    Echo "!Device_SN!">>%~dp0file.txt
    Echo.
)
pause>nul
Goto :eof
 
::Џ*абЁ¬ з*бвм б бҐаЁ©*л¬ *®¬Ґа®¬ гбва®©бвў*
:Get_USB_SN %1-in.PNPDeviceID %2-out.Device_S/N
  Set "%~2="
  Set "PNP=%~1"
  Set "PNP=%PNP:\=" "%"
  Set "PNP=%PNP:;=" "%"
  Set "PNP=%PNP:&=" "%"
  Set _Prev=
  For %%i in ("%PNP%") do (
    if "!_Prev:~0,4!"=="REV_" (Set "%~2=%%~i"& Exit /B)
    Set "_Prev=%%~i"
  )
  Exit /B
 
:Get_HDD_SN %1.in-PhysicalDrive_Name %2-out.Device_S/N
  Set "tag=%~1"
  Set "tag=%tag:\=\\%"
  For /F "UseBackQ skip=2 tokens=2 delims=," %%i In (
    `wmic path Win32_PhysicalMedia where "tag='%tag%'" Get SerialNumber /format:csv`
  ) do call set "_serial=%%i"
  ::‚лиҐ ЁбЇ®«м§гҐвбп Call, зв®Ўл г¤*«Ёвм б«г¦ҐЎ*л© бЁ¬ў®« 0x0D Ё§ ЇҐаҐ¬Ґ**®©
  set "_serial=%_serial: =%"
  ::Џа®ўҐа塞 ЇаЁ§**Є 16-аЁз*®Ј® Є®¤* (®вўҐв ¤«Ё**®© 40 бЁ¬ў®«®ў)
  if "%_serial:~39,1%" neq "" Call :Hex_To_String "%_serial%" "_serial"
  set "%~2=%_serial%"
  Exit /B
 
:Hex_To_String %1-in.Reversed.Hex.Number %2-out.String
  SetLocal& set "x16=%~1"
  set n=45
  for %%A in (- . / 0 1 2 3 4 5 6 7 8 9) do set s.!n!=%%A& set /a n+=1
  set n=65
  for %%A in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do set s.!n!=%%A& set /a n+=1
  set n=97
  for %%A in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do set s.!n!=%%A& set /a n+=1
  set xs=
  for /L %%C in (0,4,8184) do (
    if "!x16:~%%C,1!"=="" goto _ex_Hex
    set /A cplus=%%C+2
    call set /A x10=0x%%x16:~!cplus!,2%%
    call set xs=!xs!%%s.!x10!%%
    set /A x10=0x!x16:~%%C,2!
    call set xs=!xs!%%s.!x10!%%
  )
  :_ex_Hex
  EndLocal& set "%~2=%xs%"& Exit /B
 
::Љ®*ўҐав*жЁп PhysicalDrive Name -> Partition Names -> Drive Names
  :GetPartition %1.in-PhysicalDrive_Name %2-out.Drive_Names
  Set "%~2="
  For /F "skip=2 delims==, tokens=3,6-7" %%i In (
    'WMIC path Win32_DiskDriveToDiskPartition get /format:csv'
  ) do (
    if %%i=="%~1" (
      For /F "skip=2 delims==, tokens=3-4,7" %%I In (
        'WMIC path Win32_LogicalDiskToPartition get Antecedent^,Dependent /format:csv'
      ) do (
        if "%%I,%%J"=="%%j,%%k" Set "%~2=!%~2! %%K"
  )))
  Exit /B
 
::WMIC path Win32_DiskDriveToDiskPartition WHERE "Antecedent like '%DRIVE0%'" GET Dependent
 
 
::WMIC path Win32_LogicalDiskToPartition get * /format:table
 
::Џ®«гз*Ґв §**зҐ*ЁҐ Ї®б«Ґ¤*ҐЈ® в®ЄҐ** ў бва®ЄҐ, ®в¤Ґ«Ґ**®Ј® ў ⥪б⥠гЄ*§***л¬ а*§¤Ґ«ЁвҐ«Ґ¬
::€¬ҐҐв ЇаҐЁ¬гйҐбвў® ЇҐаҐ¤ ¤агЈЁ¬Ё Ї*абҐа*¬Ё:
:: - а*§¤Ґ«ЁвҐ«п¬Ё ¬®Јгв Ўлвм *ҐЄ®в®алҐ бЇҐжбЁ¬ў®«л, **ЇаЁ¬Ґа §**Є "=";
:: - Є®«ЁзҐбвў® в®ЄҐ*®ў *Ґ®Ја**ЁзҐ*®.
:GetLastToken %1-in.Sting %2-in.Delimiter %3-out.Last_Token
Set "%~3="
Set "_String=%~1"
Set _nLastDelim=-1
for /L %%C in (0,1,8184) do (
  if "!_String:~%%C,1!"=="" Goto ex_GetLastToken
  if "!_String:~%%C,1!"=="%~2" Set _nLastDelim=%%C
)
:ex_GetLastToken
Set /A _nLastDelim+=1
Set "%~3=!_String:~%_nLastDelim%!"
Exit /B
 
::“¤*«пҐв бЇа*ў* «Ёи*ЁҐ Їа®ЎҐ«л, Ё«Ё ¤агЈЁҐ Ї®¤ап¤ Ё¤гйЁҐ бЁ¬ў®«л, §*¤***лҐ ЇҐаҐ¬Ґ**®© %2 (Symbol)
:RTrimSpaces %1-in.String %2-in.Symbol %3-out.String
Set "%~3="
Set "_String=%~1"
for /L %%C in (0,1,8184) do (
  if "!_String:~%%C,1!"=="" Goto ex_RTrimSpaces
  if "!_String:~%%C,1!"=="%~2" (if not Defined LastSpace (Set nSpace=%%C& Set LastSpace=true)) else (Set LastSpace=& Set nSpace=)
)
:ex_RTrimSpaces
if Defined nSpace (Set "%~3=!_String:~0,%nSpace%!") else (Set "%~3=!_String!")
Exit /B
 
::‚лвпЈЁў*Ґв ⥪бв ў*гваЁ Є*ўл祪 (Ї®Є* *Ґ а*Ў®в*Ґв!!!)
::”г*ЄжЁп бЇҐжЁ*«м*® **ЇЁб*** ¤«п WMI, ў Є®в®але Ї®б«Ґ¤*Ё¬ бЁ¬ў®«®¬ пў«пҐвбп 0x0D.
:UnQuote %1-in.String %2-out.String
Set "%~2="
for /L %%C in (1,1,8184) do (
  if "!_String:~%%C,1!"=="" Goto ex_GetLastToken
  if "!_String:~%%C,1!"=="^"" Set _nQuote=%%C
)
Set /A _nQuote-=1
(Set %~2=!_String:~1,%_nQuote%!)
Exit /B
0
5988 / 4563 / 1096
Регистрация: 29.08.2013
Сообщений: 28,203
Записей в блоге: 3
19.12.2017, 23:44
смотри статьи в инете - использование WMI в делфи

запросы у тебя есть, выполняй их в делфи и обрабатывай
0
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
20.12.2017, 02:48
Цитата Сообщение от sonyk Посмотреть сообщение
Пример батника определяет съемные и локальные диски.
В этих "10" строчках не могу найти определения серийного номера.

Добавлено через 17 минут
Цитата Сообщение от qwertehok Посмотреть сообщение
ну не скажи, делали наколенную систему авторизации по серийному номеру флэшк
Наколенная система защиты от нелицензионного использования ПО (надеюсь ты именно её имел в виду) не нуждается ни в каком серийном номере. Для такой защиты достаточно проверять простые вещи. Например имя компьютера.

P.S. Ну чисто для справки. Защита от нелицензионного использования ПО не должна основываться на серийном номере чего либо!
0
20.12.2017, 08:43

Не по теме:


Цитата Сообщение от northener Посмотреть сообщение
надеюсь ты именно её имел в виду
нет, по использовать можно, но авторизация идет по флэшке

0
1 / 1 / 0
Регистрация: 20.10.2017
Сообщений: 32
23.12.2017, 20:29  [ТС]
товарищи программисты , кто может помочь с wmi?
0
5988 / 4563 / 1096
Регистрация: 29.08.2013
Сообщений: 28,203
Записей в блоге: 3
23.12.2017, 21:55
чем именно?
0
Джоуи
 Аватар для Joey
1083 / 645 / 240
Регистрация: 05.05.2015
Сообщений: 3,559
Записей в блоге: 2
24.12.2017, 08:29
Цитата Сообщение от sonyk Посмотреть сообщение
Пример батника определяет съемные и локальные диски. Как его прикрутить к делфи?
Вы спрашиваете как сделать то же самое в Delphi или просто как запустить существующий батник из Вашей программы?

Добавлено через 3 минуты
Цитата Сообщение от sonyk Посмотреть сообщение
На СИ подобных средах программирования так,же легко реализуемо
Приведите пример. WinAPI не зависит от языка, так что то, что под силу C, под силу и Delphi
0
1 / 1 / 0
Регистрация: 20.10.2017
Сообщений: 32
24.12.2017, 10:46  [ТС]
Вы спрашиваете как сделать то же самое в Delphi или просто как запустить существующий батник из Вашей программы?
Вопрос все тот же, Как реализовать определение серийного номера флешки?
0
5988 / 4563 / 1096
Регистрация: 29.08.2013
Сообщений: 28,203
Записей в блоге: 3
24.12.2017, 11:03
ну что ты такой непонятливый
идешь сначала сюда, читаешь про WMI в делфи
https://theroadtodelphi.com/category/wmi/
расписано все и даже примеры кода есть с запросами.

когда поймешь что такое WMI и как с ним работать останется подобрать нужный запрос для флэшки
вот тут есть пример
http://www.emmet-gray.com/Arti... mbers.html
нужно только WMI запрос выдрать и потестить

но насколько помню сейчас есть программы для WMI в которых как в regedit можно поиск задать и получить нужный ключ.
задавай серийник своей флэшки и ищи
1
1 / 1 / 0
Регистрация: 20.10.2017
Сообщений: 32
25.12.2017, 18:43  [ТС]
Спасибо всем кто пытался помочь, ответа не дождался, кто столкнется с такой-же проблемой как я, выкладываю пример решения данной проблемы:
Delphi
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
47
procedure TForm1.DEVICECHANGE(var Msg: TMessage);
var
  Enumerator: IEnumVariant;
  WbemLocator, WbemServices, WbemObjectSet : Variant;
  Properties : IEnumVariant;
  Property1, System : OleVariant;
  j : LongWord;
  sProperty : string;
  Vid, Pid, Serial : ShortString;
begin
  case Msg.WParam of
    DBT_DEVICEARRIVAL:
      begin
        Label1.Caption := 'Flash change';
 
        WbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
        WbemServices:= WbemLocator.ConnectServer;
        WbemObjectSet:= WbemServices.InstancesOf('Win32_usbhub');
        Enumerator := IEnumVariant(TVarData(WbemObjectSet._NewEnum).VDispatch);
        try
          while Enumerator.Next(1, System, j) = S_OK do
          try
            try
              if (System.Caption <> 'Запоминающее устройство для USB') then Continue;
            except end;
            Properties:= IEnumVariant(TVarData(System.Properties_._NewEnum).VDispatch);
            while Properties.Next(1, Property1, j) = S_OK do
            begin
              sProperty := VarToStr(Property1.Value);
              if(Property1.Name = 'DeviceID') then
              begin
                VID := Copy(sProperty, Pos('VID_', sProperty)+4,4);
                PID := Copy(sProperty, Pos('PID_', sProperty)+4,4);
                Serial := Copy(sProperty, Pos('PID_', sProperty)+9, Length(sProperty)-Pos('PID_', sProperty)+10);
                if ((Pos('\', Serial)>0)) then
                begin
                  Serial:=Copy(Serial, Pos('\' ,Serial)+1, Length(Serial)-Pos('\', Serial));
                end;
                lst1.Items.Add('Vid: '+VID + ' Pid: '+PID+ ' Serial: '+ Serial);
              end;
            end;
          except end;
        except end;
 
      end;
  end;
end;
1
25.12.2017, 23:59

Не по теме:

Цитата Сообщение от sonyk Посмотреть сообщение
ответа не дождался
ах тыж ***
так и сказал бы что тебе нужен готовый код, я бы даже время на такого лентяя не тратил

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.12.2017, 23:59
Помогаю со студенческими работами здесь

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

Аппаратный серийный номер флэш накопителя
Здравствуйте! Как можно считать аппаратный серийный номер с флэшки? Функция Getvolumeinformation не подходит так как это серийник тома ии...

Серийный номер флешки
ManagementObjectSearcher theSearcher = new ManagementObjectSearcher(&quot;SELECT * FROM Win32_DiskDrive WHERE InterfaceType='USB'&quot;); ...

Серийный номер флешки
Нужно узнать физический серийник флэшки. GetVolumeInformation - возвращает серийный номер тома, который меняется при форматировании. ...

серийный номер флешки
Подскажите, можно ли вообще узнать програмным путем (C#) серийный номер флешки? И если можно, то как?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru