Disculpa Luz,
He encontrado otra forma, a mí no me funciona, pero creo que es por lo capado de mi ordenador por estar en red, de hecho, he necesitado un programa especial para el número de serie, por que no me permitía hacer la consulta por msdos.
dime qué te devuelve, y si no es lo que busca, miraré una que a mí me funcione.
Prueba esto:
La siguiente llamada API obtiene el nombre de la unidad además de su número de serie.
Crea un objeto no visual (NVO) y añade la siguiente función externa local:
function long GetVolumeInformationA( ref string ls_RootPath, ref string ls_VolName, long ll_VolLen, ref string ls_volserial, long ll_maxcomplen, long ll_systemflags, ref string ls_SystemName,long ll_SystemLen ) Library 'kernel32'
Entonces añade la función GetVolumeName la cual acepta una cadena y retorna otra cadena. Pon el siguiente código:
// Call the API function to get the volume
// label from a drive letter
String ls_Volume
String ls_Drive, ls_FileSys, ls_Flags, ls_Serial
Long ll_Max, ll_Flags, ll_RC, ll_FileSys
Long ll_Volume
ls_Drive = as_Volume
ls_Volume = Space(32)
ls_FileSys = Space(32)
ls_Serial = Space(32)
ll_Volume = Len( ls_Volume )
ll_FileSys = Len( ls_Filesys )
ll_RC = GetVolumeInformationA( ls_Drive, ls_Volume, ll_Volume, &
ls_Serial, ll_Max, ll_Flags, ls_FileSys, ll_FileSys )
IF ll_RC = 0 THEN
ls_Volume = ''
ELSE
ls_Volume = Trim( ls_Volume )
END IF
RETURN ls_Volume
LLama a la función pasándole la letra de la unidad de la que quieras obtener información, por ejemplo: C:\