Para hacer una prueba creo la siguiente funcion:
function TForm1.GetVolumeSerialNumber(const drive: TFilename): DWord;
var
VolumeName, FileSystemName: array[0..MAX_PATH-1] of char;
VolumeSerialNumber, MaxFilenameLength, FileSystemFlags: DWord;
begin
GetVolumeInformation(PChar(drive),
VolumeName, MAX_PATH, @VolumeSerialNumber, MaxFilenameLength,
FileSystemFlags, FileSystemName, MAX_PATH);
Result := VolumeSerialNumber;
end;
En la documentación que he encontrado dice que funciona en plataforma win9x pero yo no lo consigo. Esta misma función en plataforma NT si funciona. Me refiero a obtener el número de serie de un disco duro de un equipo en red.
GetVolumeSerialNumber('c:\') si funciona pero no funciona si mapeo una unidad de red. En la documentación dice que hay que poner lo siguiente:
GetVolumeSerialNumber('\\servidor\carpeta\') o
GetVolumeSerialNumber('W') donde W es la unidad de red mapeada. Pero...a mi desde luego no me funciona, siempre me devuelve un 0(cero).
A ver si con esta explicación alguien me puede ayudar.
|