Numer seryjny dysku

0

Witam!
Wiem że to pewnie pytanie z dziedziny "dla początkujących" ale jak odczytać numer seryjny dysku?
Znalazłem coś takiego: http://read.pudn.com/downloads47/sourcecode/crypt/159311/DiskSerialNumber.cpp__.htm ale że jestem noga z C/C++ to nie wiem jak tego użyć :/
Chciałbym napisać aplikację która odczyta numer seryjny dysku i wypisze go w konsoli, aplikacja jest mi potrzebna do osadzenia a innej aplikacji (Adobe AIR).
Są na necie gotowe biblioteki, ale ważą po 170kb i na dodatek większość płatna.
Podpowie ktoś jak coś takiego napisać? Albo jak skorzystać z tego kodu który znalazłem? W konsoli wypisać numer seryjny pierwszego dysku (jeśli jest ich więcej).
Chciałbym aby działało to pod każdą wersją windowsa.
Z góry dzięki za pomoc :)

Ok mam jeszcze coś takiego: http://www.codeguru.com/Cpp/W-P/system/hardwareinformation/article.php/c2815
Niestety na win 7 64 bez praw administratora nie działa :/

0

Tzn. rozumiem, że chodzi o aplikacje dla Windows oraz masz dostęp do bibliotek nagłówkowych Windows API?
Tutaj masz potrzebną funkcję :
http://msdn.microsoft.com/en-us/library/Aa364993

A tutaj masz kod, ale nie testowałem go :

 
TCHAR volumeName[MAX_PATH + 1] = { 0 };
TCHAR fileSystemName[MAX_PATH + 1] = { 0 };
DWORD serialNumber = 0;
DWORD maxComponentLen = 0;
DWORD fileSystemFlags = 0;
if (GetVolumeInformation(
	_T("C:\\"),
	volumeName,
	ARRAYSIZE(volumeName),
	&serialNumber,
	&maxComponentLen,
	&fileSystemFlags,
	fileSystemName,
	ARRAYSIZE(fileSystemName)))
{
    _tprintf(_T("Volume Name: %s\n"), volumeName);
    _tprintf(_T("Serial Number: %lu\n"), serialNumber);
    _tprintf(_T("File System Name: %s\n"), fileSystemName);
    _tprintf(_T("Max Component Length: %lu\n"), maxComponentLen);
}

Pamiętaj aby dołączyć plik nagłówkowy windows.h

0

^ Numer seryjny woluminu to nie jest to samo co numer seryjny dysku twardego.
Wolumin to może być zwyczajna partycja, której numer seryjny Windows nadaje przy każdym formatowaniu.

Z resztą jak byk w dokumentacji stoi:

This function returns the volume serial number that the operating system assigns when a hard disk is formatted. To programmatically obtain the hard disk's serial number that the manufacturer assigns, use the Windows Management Instrumentation (WMI) Win32_PhysicalMedia property SerialNumber.

Najprościej będzie skorzystać właśnie z WMI.

0

Na WMI znalazłem wcześniej trochę informacji, ale jeśli w google wpiszę fraze "c++ get hdd serial" to wszędzie proszą o rozwiązanei bez WMI.
Jakie są plusy/minusy WMI, czy muszę mieć prawa administratora żeby mieć do tego dostęp i czy na win xp bez sp (wiem skrajność) też ruszy?

0

http://www.codeproject.com/KB/mcpp/DriveInfoEx.aspx
Tylko,ze to mieszanka C++ i .NET

Ewentualnie może coś z tym pokombinuj :
http://www.installsetupconfig.com/win32programming/windowsdiskapis2_12.html

Tutaj masz też programik z kodem źródłowym...
http://www.winsim.com/diskid32/diskid32.html

1 użytkowników online, w tym zalogowanych: 0, gości: 1