образовательная корпорация
Создать
Править
Отменить
Вверх

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
запуск_с_флешки [2015/02/17 18:53]
root создано
запуск_с_флешки [2018/08/07 02:51] (текущий)
will
Строка 1: Строка 1:
 +
 FSC, ну логично слямздить идею у работающих проэктов. Не помню где но встречал прогу которая запускалась при наличие флэшки с файлами. Но там был не перезаписуемый флэш накопитель. Ну а вам можно просто в обычную флэш закинуть файлик и проверять дату его изменения (что бы не накопировали гору таких флэш) или спрятать на флэшке какой нибудь файлик и всё. А потом при запуске проги сканировать все корневые каталоги дисков на наличие вашего файла. FSC, ну логично слямздить идею у работающих проэктов. Не помню где но встречал прогу которая запускалась при наличие флэшки с файлами. Но там был не перезаписуемый флэш накопитель. Ну а вам можно просто в обычную флэш закинуть файлик и проверять дату его изменения (что бы не накопировали гору таких флэш) или спрятать на флэшке какой нибудь файлик и всё. А потом при запуске проги сканировать все корневые каталоги дисков на наличие вашего файла.
  
Строка 4: Строка 5:
 но одна проблема встала:​ как мне серийный номер привязать к букве флешки?​ но одна проблема встала:​ как мне серийный номер привязать к букве флешки?​
  
 +<​file>​
 Код C++ Код C++
- 
-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 
- 
   
  
Строка 124: Строка 67:
 //​--------------------------------------------------------------------------- //​---------------------------------------------------------------------------
  
 +
 +</​file>​
 программа возвращает VID, PID и серийный номер в виде USB\VID_XXXX_PID_YYYY\ZZZZ,​ где XXXX-VID, YYYY-PID, ZZZZ-Серийный номер (Аппаратный!!!!!! который я так долго искал) программа возвращает VID, PID и серийный номер в виде USB\VID_XXXX_PID_YYYY\ZZZZ,​ где XXXX-VID, YYYY-PID, ZZZZ-Серийный номер (Аппаратный!!!!!! который я так долго искал)
 Программный серийный номер можно легко достать функцией GetVolumeInformation Программный серийный номер можно легко достать функцией GetVolumeInformation
Строка 130: Строка 75:
  
  
 +<​file>​
 Код C++ Код C++
- 
-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 
- 
   
  
Строка 240: Строка 132:
 } }
  
 +</​file>​
  
  
Строка 264: Строка 157:
     DRIVE_RAMDISK - 6 : виртуальный диск, созданный в оперативной памяти ​     DRIVE_RAMDISK - 6 : виртуальный диск, созданный в оперативной памяти ​
  
 +
 +<​file>​
 C/C++ C/C++
  
Строка 275: Строка 170:
       lpRootPathName:​ PChar //путь к диску       lpRootPathName:​ PChar //путь к диску
 ): UINT; stdcall; ): UINT; stdcall;
 +
 +</​file>​
  
 Замечание:​ Если в качестве параметра указать для С/С++ NULL, а для Delphi - nil то тип устройства будет определяться для текущего диска (с которого была запущена программа). Замечание:​ Если в качестве параметра указать для С/С++ NULL, а для Delphi - nil то тип устройства будет определяться для текущего диска (с которого была запущена программа).
Строка 281: Строка 178:
 C/C++ C/C++
  
 +
 +<​file>​
 BOOL WINAPI GetVolumeInformation( BOOL WINAPI GetVolumeInformation(
       LPCTSTR lpRootPathName, ​   //путь к сетевому или локальному       LPCTSTR lpRootPathName, ​   //путь к сетевому или локальному
Строка 308: Строка 207:
       nFileSystemNameSize:​ DWORD //​размер буфера под название ФС       nFileSystemNameSize:​ DWORD //​размер буфера под название ФС
 ): BOOL; stdcall; ): BOOL; stdcall;
 +
 +
 +</​file>​
  
 Замечание:​ Если в качестве первого параметра указать для С/С++ NULL, а для Delphi - nil то функция будет выполняется для текущего диска (с которого была запущена программа). Замечание:​ Если в качестве первого параметра указать для С/С++ NULL, а для Delphi - nil то функция будет выполняется для текущего диска (с которого была запущена программа).
Строка 313: Строка 215:
 Ну а теперь собственно для пущего интересу приведу пример,​ как привязать программу к устройству. В данном примере будем привязывать программу к флешке. Смотрим пример:​ Ну а теперь собственно для пущего интересу приведу пример,​ как привязать программу к устройству. В данном примере будем привязывать программу к флешке. Смотрим пример:​
 C/C++ C/C++
 +
 +
 +<​file>​
  
 #​include ​ #​include ​
Строка 385: Строка 290:
   readln;   readln;
 end. end.
 +
 +
 +</​file>​
  
 Замечание:​ Может возникнуть вопрос,​ а как узнать серийник диска, чтобы знать с чем сравнивать?​ Очень просто,​ для этого пишем тестовую прогу, в которой пишем следующий код: Замечание:​ Может возникнуть вопрос,​ а как узнать серийник диска, чтобы знать с чем сравнивать?​ Очень просто,​ для этого пишем тестовую прогу, в которой пишем следующий код: