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.

Í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

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:

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.

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

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

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.