Oppure

Loading
15/10/22 13:43
Ma che c'entra questa domanda in questo thread del 2018???

Crea una nuova discussione!

Comunque il seriale è unico ma non tutti gli hd lo restituiscono. Può essere che venga restituito il modello oppure alcuni sw non funzionano correttamente
15/10/22 13:47
Carlo
Fai una domanda specifica, accodarsi ad un post del 2018 non è indicato.

Negli HDD c'è il seriale dell'hardware e i seriali delle partizioni.

Win ha l'apposita API, contenuta in kernel32.dll: GetVolumeInformationA GetVolumeInformation

I linguaggi in .Net hanno le istruzioni apposite.

Con alcune configurazioni hardware e/o restrizioni, il seriale non si raggiunge
Ultima modifica effettuata da Carlo 15/10/22 13:55
in programmazione tutto è permesso
15/10/22 19:17
No, quella API non restituisce il seriale hardware ma solo il seriale del volume che è un'altra cosa.

Puoi usare WMI per il seriale hw
16/10/22 0:02
Carlo
Ciao nessuno, rischiamo di parlare tra noi, ma a qualcuno petrebbe interessare.
Usare l'API in Kernel32.dll, funziona per il seriale degli HDD su XP o precedenti S.O.

@paolomi
Con System.Management, si può sapere tutto quello che vuoi.

Metti una listbox nel form:

using System;
using System.Management; // aggiungere Riferimento assembly System.Management.dll
using System.Windows.Forms;

namespace HD_serial
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            ManagementObjectSearcher CercaHD = new ManagementObjectSearcher("select * from " + "Win32_DiskDrive");

            try
            {
                foreach (ManagementObject HD in CercaHD.Get())
                {
                    try
                    {
                        listBox1.Items.Add(HD["Name"]);
                    }
                    catch
                    {
                        listBox1.Items.Add(HD.ToString());
                    }

                    if (HD.Properties.Count <= 0)
                    {
                        MessageBox.Show("Non trovo HDD", "Messaggio",MessageBoxButtons.OK, MessageBoxIcon.Information);
                        return;
                    }

                    string Seriale = HD.Properties["SerialNumber"].Value.ToString();
                    string SerialeCHAR = "";
                    bool Esadecimale = true;

                    for (int i = 0; i<Seriale.Length; i+=4)
                    {
                        try
                        {
                            SerialeCHAR += Convert.ToChar(Convert.ToInt32(Seriale.Substring(i+2, 2), 16));
                            SerialeCHAR += Convert.ToChar(Convert.ToInt32(Seriale.Substring(i, 2), 16));
                        }
                        catch 
                        {
                            Esadecimale = false;
                        }
                    }

                    if (Esadecimale)
                    {
                        listBox1.Items.Add("serialeHEX:    " + Seriale);
                        listBox1.Items.Add("serialeCHAR: " + SerialeCHAR.Trim());
                    }
                    else
                    {
                        listBox1.Items.Add("seriale: " + Seriale);
                    }

                    listBox1.Items.Add("");
                }
            }
            catch (Exception er)
            {
                MessageBox.Show("ERRORE \n" + er.Message, "Errore", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
    }
}


EDIT
Se il seriale è in esadecimale, nella conversione in CHAR le coppie dei caratteri devono essere inverite. Codice corretto.
Ultima modifica effettuata da Carlo 17/10/22 12:40
in programmazione tutto è permesso
16/10/22 8:04
La API serve per il seriale del volume, ripeto, non per quelli hardware. A prescindere dal SO.

System.Management è la libreria di classi .NET con cui si utilizza WMI, appunto, ed è quelli che deve usare per il seriale hw.
Ultima modifica effettuata da 16/10/22 8:33