Numer seryjny dysku

Odpowiedz Nowy wątek
2011-09-03 23:24
Tyku
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/download[...]11/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[...]information/article.php/c2815
Niestety na win 7 64 bez praw administratora nie działa :/

Pozostało 580 znaków

2011-09-04 04:23
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

Pozostało 580 znaków

2011-09-04 04:44
Rev
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.


Przepraszam, spiacy bylem, a chcialem pomoc. Faktycznie, najlepiej bedzie skorzystac z WMI. http://msdn.microsoft.com/en-us/library/aa394346%28v=vs.85%29.aspx - LOSMARCELOS 2011-09-04 11:56

Pozostało 580 znaków

2011-09-04 12:29
Tyku
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?

Jak zależy Ci na przesadnej kompatybilości z bardzo starymi OS'ami to one nie maja wsparcia dla WMI ;), tak możesz śmiało korzystać. - Bartosz Wójcik 2011-09-05 23:46

Pozostało 580 znaków

2011-09-05 23:26
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[...]ming/windowsdiskapis2_12.html

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

edytowany 1x, ostatnio: LOSMARCELOS, 2011-09-05 23:29

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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