Oppure

Loading
02/01/10 8:41
lorenzo
Cercavo di ottenere il mac address di una penna usb collegata al pc.
Usando c#, avevo intenzione di usare WMI con la Win32_DiskDrive.
Cito però da msdn:

SerialNumber
Data type: string
Access type: Read-only

Number allocated by the manufacturer to identify the physical media.

Example: WD-WM3493798728

Windows Server 2003, Windows XP, Windows 2000, and Windows NT 4.0: This property is not available.

quindi cosa posso usare per ottenere il mac address su XP?
aaa
03/01/10 11:41
nessuno
Il MAC address è proprio di una interfaccia di rete ...

Di cosa parli ?
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
03/01/10 14:38
lorenzo
no, ogni dispositivo ha il mac-address. E' semplicemente la sigla univoca del dispositivo assegnatagli dal produttore
aaa
03/01/10 15:14
nessuno
Ti confondi con il "serial number" del dispositivo ... il MAC (Media Access Control) address (l'indirizzo fisico), è proprio delle interfacce di rete.

Il Serial Number USB, sebbene non sia "obbligatorio", se implementato è unico.

Penso che l'unico modo per alcuni sistemi di rilevarlo, sia a livello di device driver.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
10/01/10 17:10
HeDo

chiamando opportune api puoi arrivare all'id del dispositivo.
questo codice l'ho scritto in C++, per farlo girare in .net basta usare opportunamente pinvoke:


#include <iostream>
#include <windows.h>

using namespace std;


DWORD GetCurrentDriveSerial() {

	char pBuff[16];
	DWORD dwSerial;

	memset(pBuff, 0, 16);

	GetFullPathName("\", 16, pBuff, NULL);
	GetVolumeInformation(NULL, NULL, 64, &dwSerial, NULL, NULL, NULL, 0);

	return dwSerial;

}

BOOL IsCurrentDriveRemovable() {

	char pBuff[16];

	memset(pBuff, 0, 16);

	GetFullPathName("\", 16, pBuff, NULL);

	return GetDriveType(pBuff) == DRIVE_REMOVABLE;

}


int main() {


	printf("%X\n", GetCurrentDriveSerial());
	printf("%s\n", IsCurrentDriveRemovable() ? "rimuovibile" : "non rimuovibile");

	system("PAUSE");

	return 0;

	char pBuff2[64];
	char pBuff[64];
	char pFS[16];

	memset(pBuff2, 0, 64);
	memset(pBuff, 0, 64);
	memset(pFS, 0, 16);

	GetFullPathName("\", 64, pBuff2, NULL);

	DWORD dwSerial;

	GetVolumeInformation(NULL, pBuff, 64, &dwSerial, NULL, NULL, pFS, 16);

	printf("Current Drive: %s\nVolume: %s\nSerial: %X\nFileSystem: %s\n\n", pBuff2, pBuff, dwSerial, pFS);

	int iRes = GetDriveType(pBuff2);

	switch(iRes) {

		case DRIVE_UNKNOWN:

			cout << "Drive Unknown" << endl;

			break;

		case DRIVE_NO_ROOT_DIR:

			cout << "The root path is invalid; for example, there is no volume is mounted at the path." << endl;

			break;

		case DRIVE_REMOVABLE:

			cout << "The drive has removable media; for example, a floppy drive, thumb drive, or flash card reader." << endl;

			break;

		case DRIVE_FIXED:

			cout << "The drive has fixed media; for example, a hard drive or flash drive." << endl;

			break;

		case DRIVE_REMOTE:

			cout << "The drive is a remote (network) drive." << endl;

			break;

		case DRIVE_CDROM:

			cout << "The drive is a CD-ROM drive." << endl;

			break;

		case DRIVE_RAMDISK:

			cout << "The drive is a RAM disk." << endl;

			break;
	}

	system("PAUSE");

	return 0;

}


:)
aaa
10/01/10 17:22
nessuno
Postato originariamente da HeDo:


chiamando opportune api puoi arrivare all'id del dispositivo.


Con la API GetVolumeInformation si ottiene solamente il seriale inserito dal sistema operativo all'atto della formattazione (valore casuale che si puo' modificare come si vuole e che non da' nessuna certezza di univocità;).

Quello di cui parlavo è il seriale hardware assegnato dal produttore che, se disponibile per il device interessato, si ottiene tramite WMI.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
10/01/10 18:22
HeDo
Postato originariamente da nessuno:

Postato originariamente da HeDo:


chiamando opportune api puoi arrivare all'id del dispositivo.


Con la API GetVolumeInformation si ottiene solamente il seriale inserito dal sistema operativo all'atto della formattazione (valore casuale che si puo' modificare come si vuole e che non da' nessuna certezza di univocità;).

Quello di cui parlavo è il seriale hardware assegnato dal produttore che, se disponibile per il device interessato, si ottiene tramite WMI.


ok questo non lo sapevo, cmq leggendo sull'msdn sembra che l'unico modo di ottenerlo è proprio attraverso WMI: msdn.microsoft.com/en-us/library/…

usando la classe Win32_PhysicalMedia
aaa
10/01/10 18:37
lorenzo
ok, grazie a tutti, adesso vedrò di documentarmi! :k:
aaa