• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

guilherme

HDD Serial Number

6 mensagens neste tópico

Neste momento estou a usar um método que dada uma Drive (por ex C) ele devolve o serial volume.

public string GetVolumeSerial(string strDriveLetter)
{
if( strDriveLetter=="" || strDriveLetter==null) strDriveLetter="C";
ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"" + strDriveLetter +":\"");
disk.Get();
return disk["VolumeSerialNumber"].ToString();
}

mas o que eu realmente queria era um método que recebesse à mesma 1 drive como parametro e devolvesse o numero de fabricante, unico para cada disco,

sendo que o volume de cada drive muda cada vez que se formata uma drive.

Se alguém puder ajudar agradeço

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas queres que o volume seja introduzido pelo utilizador? Ou é automatico?

Se for automatico, atraves de

Application.StartupPath

(por exemplo) consegues aceder ao volume de onde estas a executar o programa.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Antes de mais, obrigado pela resposta.

Nada disso, esse método funciona bem, mas devolve o valor do volume, um numero que é gerado sempre que formatas uma unidade.

E o que eu quero é o numero de fabricante do disco (numero fixo).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O melhor que consegui arranjar foi isto e mesmo assim parece que não funciona:

http://www.codeproject.com/KB/cs/hard_disk_serialno.aspx

O problema é que ele vai pesquisar os discos existentes, nesse exemplo introduz varios objectos hd numa arraylist e depois manda para o ecran, agora a grande questão, como ir buscar apenas o sn do disco onde a aplicação está a correr :dontgetit:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas!

Experimenta este codigo!

[DllImport("kernel32.dll")]
        private static extern long GetVolumeInformation(string PathName, StringBuilder VolumeNameBuffer, UInt32 VolumeNameSize, ref UInt32 VolumeSerialNumber, ref UInt32 MaximumComponentLength, ref UInt32 FileSystemFlags, StringBuilder FileSystemNameBuffer, UInt32 FileSystemNameSize);

  public string GetVolumeSerial(string strDriveLetter)
        {
            uint serNum = 0;
            uint maxCompLen = 0;
            StringBuilder VolLabel = new StringBuilder(256); // Label
            UInt32 VolFlags = new UInt32();
            StringBuilder FSName = new StringBuilder(256); // File System Name
            strDriveLetter += ":\\"; // fix up the passed-in drive letter for the API call
            long Ret = GetVolumeInformation(strDriveLetter, VolLabel, (UInt32)VolLabel.Capacity, ref serNum, ref maxCompLen, ref VolFlags, FSName, (UInt32)FSName.Capacity);

            return Convert.ToString(serNum);
        }

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora