hdd serial number cu wmi sub vista

Intrebari legate de programarea cu biblioteci precum MFC, ATL, WTL si GDI+.
toderut
Membru
Membru
Posts: 68
Joined: 03 Aug 2009, 11:17
Judet: Bihor

hdd serial number cu wmi sub vista

Post by toderut » 15 May 2010, 22:03

doresc sa aflu hdd serial number sub vista (sub celelalte os nu am probleme- nici cu w7).
am inteles ca cel mai la indemana ar fi cu wmi.
multumesc!



User avatar
cristianamarie
Membru++
Membru++
Posts: 480
Joined: 12 Mar 2009, 18:47
Judet: Iaşi
Location: Iasi

Re: hdd serial number cu wmi sub vista

Post by cristianamarie » 16 May 2010, 17:46

Nu e nevoie de WMI.
GetVolumeInformation are un LPDWORD lpVolumeSerialNumber.
Cu WMI e Win32_PhysicalMedia unde ai string SerialNumber.
Nuclear launch detected

toderut
Membru
Membru
Posts: 68
Joined: 03 Aug 2009, 11:17
Judet: Bihor

Re: hdd serial number cu wmi sub vista

Post by toderut » 09 Jun 2010, 20:21

GetVolumeInformation da serialul partitie, nu cel fizic al hardului, de care am eu nevoie(mai mult, acesta poate fi schimbat cu usurinta). Am nevoie de ceva unic al calculatorului, care poate fi citit din program
O sa incerc cu Win32_PhysicalMedia, sa vad ce da si asta!. Poate ma ajutati!
Multumesc!


toderut
Membru
Membru
Posts: 68
Joined: 03 Aug 2009, 11:17
Judet: Bihor

Re: hdd serial number cu wmi sub vista

Post by toderut » 09 Jun 2010, 21:37

l am incercat, dar merge in xp, w7 etc dar nu merge in vista nici cu drepturi de administrator.

User avatar
MrSmersh
Microsoft MVP
Microsoft MVP
Posts: 289
Joined: 20 Jul 2007, 10:18
Location: Timisoara
Contact:

Re: hdd serial number cu wmi sub vista

Post by MrSmersh » 10 Jun 2010, 11:58

Da manifest ai la app?

toderut
Membru
Membru
Posts: 68
Joined: 03 Aug 2009, 11:17
Judet: Bihor

Re: hdd serial number cu wmi sub vista

Post by toderut » 10 Jun 2010, 13:00

Nu am!

User avatar
cristianamarie
Membru++
Membru++
Posts: 480
Joined: 12 Mar 2009, 18:47
Judet: Iaşi
Location: Iasi

Re: hdd serial number cu wmi sub vista

Post by cristianamarie » 10 Jun 2010, 17:15

Mai merita incercat cu SetupDiXXX APIs. Trebuie culese info despre class GUID la discuri si aproape sigur ai si serial number acolo.
Nuclear launch detected

toderut
Membru
Membru
Posts: 68
Joined: 03 Aug 2009, 11:17
Judet: Bihor

Re: hdd serial number cu wmi sub vista

Post by toderut » 10 Jun 2010, 19:54

Daca nu vreau prea mult v as ruga sa ma ajutati cu un cod care sa extraga serialul hardului (master).
Cel di diskid32 nu mi merge sub vista.
Va multumesc anticipat!

User avatar
MrSmersh
Microsoft MVP
Microsoft MVP
Posts: 289
Joined: 20 Jul 2007, 10:18
Location: Timisoara
Contact:

Re: hdd serial number cu wmi sub vista

Post by MrSmersh » 10 Jun 2010, 21:56

Gogu da idei din primahttp://www.codeproject.com/KB/mcpp/DriveInfoEx.aspx de ex si e scris de un roman...
Sau scrie tu codu si te ajutam sa il faci sa mearga

toderut
Membru
Membru
Posts: 68
Joined: 03 Aug 2009, 11:17
Judet: Bihor

Re: hdd serial number cu wmi sub vista

Post by toderut » 10 Jun 2010, 22:13

it's wonderful but..
don't work on Vista or Win7!

Din pacate, nu am capacitatea de a solutiona povestea asta (eu sunt mic - am doar o steluta, ma intelegeti :yes: ).
Ramane valabil apelul cu codul sursa!

User avatar
Silviu Ardelean
Senior
Senior
Posts: 1175
Joined: 12 Jul 2007, 09:22
Judet: Timiş
Location: Timisoara
Contact:

Re: hdd serial number cu wmi sub vista

Post by Silviu Ardelean » 10 Jun 2010, 22:50

Pe Vista si Win7 cu siguranta e si o problema de permisiuni...

User avatar
cristianamarie
Membru++
Membru++
Posts: 480
Joined: 12 Mar 2009, 18:47
Judet: Iaşi
Location: Iasi

Re: hdd serial number cu wmi sub vista

Post by cristianamarie » 11 Jun 2010, 00:07

1. formatezi un string L"\\\\.\\PHYSICALDRIVE%d", %d = disk number (0, 1, ...)
Cu asta facem un CreateFile

Code: Select all

HANDLE hDevice = ::CreateFileW(szHDD, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
2. prepari un query

Code: Select all

STORAGE_PROPERTY_QUERY query;
memset(&query, 0, sizeof(STORAGE_PROPERTY_QUERY)); 
query.QueryType = PropertyStandardQuery;
query.PropertyId = StorageDeviceProperty;
3. DeviceIoControl cu IOCTL_STORAGE_QUERY_PROPERTY

Code: Select all

BYTE pbinfo[16384] = {0};
DWORD unused = 0; 
::DeviceIoControl(hDevice, IOCTL_STORAGE_QUERY_PROPERTY, &query, sizeof(query), &pbinfo[0], _countof(pbinfo), &unused, (LPOVERLAPPED) NULL);
4. mergi la offsetul serial

Code: Select all

STORAGE_DEVICE_DESCRIPTOR *descrip = (STORAGE_DEVICE_DESCRIPTOR *)&pbinfo[0];
char* ssn = (char *)&pbinfo[descrip->SerialNumberOffset];
Aici o sa fie un string ascii hexa, reversed probabil.
La mine e "020202027502d244857593548303b4c493536303".
Din hexa iese " W -DXW9E80KL9560", stringul e reversed, " WD-WXE908LK5906", trim stringa/dreapta si finally iese "WD-WXE908LK5906".


Nota. 1 SIGUR o sa dea ERROR_ACCESS_DENIED (5) pentru non-admins.
Nuclear launch detected

toderut
Membru
Membru
Posts: 68
Joined: 03 Aug 2009, 11:17
Judet: Bihor

Re: hdd serial number cu wmi sub vista

Post by toderut » 11 Jun 2010, 00:49

citire serial.rar
(27.97 KiB) Downloaded 338 times
asta merge in xp si win7 dar nu vrea in vista
bateti l voi la cap cu permisiunile

toderut
Membru
Membru
Posts: 68
Joined: 03 Aug 2009, 11:17
Judet: Bihor

Re: hdd serial number cu wmi sub vista

Post by toderut » 11 Jun 2010, 00:56

Cristi, iti multumesc mult pentru stradanie (si celorlalti, desigur). Ramane sa studiez atent tot ce ai postat si sa folosesc la ceea ce mi trebuie mie.
Noctem bonam!

Post Reply