A sorozatszám a botot

Egyszer szembe a feladat -, hogy írjon egy programot őr, amely lehetővé teszi a használatát csak jóváhagyott USB-stick minden számítógépen. Úgy döntöttem, hogy kötődést a sorozatszámot. valamint a flash-VID és PID (gyártóazonosító, Part ID), amely általában tekinthető az egyedi információkat.

Most nem értem, hogyan önkényes újraírása flash meghajtók alatt VID, PID, soros, mindez megtehető kiválasztásában a megfelelő utilitku ellenőrzése alatt a gyártó.

Így lógott feladat, hogy megtanulják az összes szükséges információt. Most nem veszi figyelembe a fejlődését az egész alkalmazást, és azt mutatják, csak az alap funkció. Örülnék, ha valaki tud segíteni, hogy véglegesítsék a programot. Igen, és én folyamatosan fejleszteni és frissíteni a kódot.

Tehát használják fel az adatokat, hogy válasszon a kedvenc WMI (Windows Management Instrumentation). Miért tetszik? Igen, mert minden működik „out of the box”, nincs szükség további szoftver telepítésére és alkatrészeik, valamint rengeteg osztályok.

Hogyan működik a technológia - keresni WMI obszcén, WMIC, és elmesélik tovább.

Felveszi ki az adatokat a sorban készülék azonosítót, ami valahogy így néz ki:

Ez a vonal egy VID, PID és sorozatszám után a második perjel.

Fontos, hogy ne keverjük össze a soros flash kártya számát és sorozatszámát a kötetet. Az utolsó (elérhető a dir parancs) változások formázás a botot, és nem alkalmas az egyedi azonosítót.

A mechanizmus megszerzésének sorozatszámok flash-

A feladat most -, hogy ezt a vonalat.

WMI azt jelenti, hogy ezt az információt a class Win32_usbhub. bejelentette az űrben \\ root \ cimv2

Így futtatja a parancssort, van egy program wmic.

A sorozatszám a botot

Írásban ott mező kiválasztása parancs DeviceID osztályából Win32_usbhub. Előre tekintve azt jelenti, hogy fog állni egy csomó eszköz (root hub, egér, stb), így rögtön levelet a szűrő tároló eszközök.

wmic: root \ cli> path win32_usbhub Ahol (Caption = "Mass Storage Device USB") get DeviceID

A sorozatszám a botot

wmic utat kap, ha

Hogy van a mi becses vonalon. Elemzési közülük már más eszközökkel.

By the way, itt futási idő Delphi, valaki akkor jól jöhet.

A kód, persze, durva, de össze a térd. A legfontosabb dolog - a munka. Akkor használja, ha azt szeretnénk, hogy:

A sorozatszám a botot

Töltse le a projekt egy futtatható fájlt, akkor link

Így használatával WMI, megkaptuk a sorszámát a botot. valamint további információk formájában VID és PID.

Lehetséges, hogy valamilyen módon megváltoztassa a sorozatszámot a botot?

Igen, ez lehetséges. Van-villogók programot (minden chip saját program), amelyeket fel lehet használni, hogy megváltoztassa a sorozatszámot és VID PID azonosítókat. Például az Alcor chips használom Alcor Change Vid Pid Rework.

A sorozatszám a botot

Változás a soros flash kártya számát

A sorozatszám a botot

Változás a soros flash kártya számát

A sorozatszám a botot

Változás a soros flash kártya számát

Sorozatszám módosítását könnyen kibír. Csatlakoztassa az USB flash meghajtót, válassza ki azt a port listáról. Nyomja meg a Beállítás (nyit meg a képek fent), adja meg a kívánt VID PID és az SN és nyomja meg a START gombot. USB flash meghajtó készen egy pillanat egy új sorszámot.

By the way, korábban már írtam, hogyan formázza a flash meghajtót NTFS - hasznos lehet!

Ön is élvezheti:

Ebben a kód semmilyen módon. De akkor más kiegészítő WMI osztályban. win32_diskdrive
Összehasonlításképpen, a következő parancsot a parancssorba a behelyezett memóriakártyára:
> Wmic útvonal win32_diskdrive kap pnpdeviceid, méret

Látni fogja, egy sort sorszám, valamint a méret byte-ban.
Ez csak akkor szükséges, hogy jelöljenek ki egy sorszámot, hogy megtalálja az egyik ilyen vonalak, valamint, hogy a méret byte-ban (korábban számítani, például MB).

Szia, meg tudná mondani, én lógott a funkció WM_DEVICECHANGE esemény, hanem az üzenet DBT_DEVICEARRIVAL, hogy van, amikor a bot csak ki egyszer azt kell tudni, hogy a sorozatszám, a végén kapok egy hiba
„Nem lehet egy kimenő hívás, mert az alkalmazás feldolgozza a bejövő hívást szinkron.”
5 másodperces késleltetés takarít, de talán valahogy meg lehet kijavítani a hibát?
Köszönöm előre.

@litladmin. Itt a kód:
eljárás DEVICECHANGE (var Msg: TMessage); Üzenet WM_DEVICECHANGE;

eljárás TForm1.DEVICECHANGE (var Msg: TMessage);
var
Enumerator: IEnumVariant;
WbemLocator, WbemServices, WbemObjectSet. Variant;
Tulajdonságok. IEnumVariant;
Property1, Rendszer. OleVariant;
j. LongWord;
sProperty. string;
Vid, PID, Soros. ShortString;
kezdődik
esetében Msg.WParam a
DBT_DEVICEARRIVAL:
kezdődik
Label1.Caption: = 'Flash változás';

A cikket Köszönöm, megpróbálom megérteni.

Kapcsolódó cikkek