Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Gestione licenza
Forum - C# / VB.NET - Gestione licenza - Pagina 3

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
Carlo (Member)
Guru


Messaggi: 1344
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 15:47
Sabato, 15/10/2022
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 il 15/10/2022 alle 15:55


in programmazione tutto è permesso
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 21:17
Sabato, 15/10/2022
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


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à.
PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1344
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 2:02
Domenica, 16/10/2022
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:

Codice sorgente - presumibilmente C++

  1. using System;
  2. using System.Management; // aggiungere Riferimento assembly System.Management.dll
  3. using System.Windows.Forms;
  4.  
  5. namespace HD_serial
  6. {
  7.     public partial class Form1 : Form
  8.     {
  9.         public Form1()
  10.         {
  11.             InitializeComponent();
  12.         }
  13.  
  14.         private void Form1_Load(object sender, EventArgs e)
  15.         {
  16.             ManagementObjectSearcher CercaHD = new ManagementObjectSearcher("select * from " + "Win32_DiskDrive");
  17.  
  18.             try
  19.             {
  20.                 foreach (ManagementObject HD in CercaHD.Get())
  21.                 {
  22.                     try
  23.                     {
  24.                         listBox1.Items.Add(HD["Name"]);
  25.                     }
  26.                     catch
  27.                     {
  28.                         listBox1.Items.Add(HD.ToString());
  29.                     }
  30.  
  31.                     if (HD.Properties.Count <= 0)
  32.                     {
  33.                         MessageBox.Show("Non trovo HDD", "Messaggio",MessageBoxButtons.OK, MessageBoxIcon.Information);
  34.                         return;
  35.                     }
  36.  
  37.                     string Seriale = HD.Properties["SerialNumber"].Value.ToString();
  38.                     string SerialeCHAR = "";
  39.                     bool Esadecimale = true;
  40.  
  41.                     for (int i = 0; i<Seriale.Length; i+=4)
  42.                     {
  43.                         try
  44.                         {
  45.                             SerialeCHAR += Convert.ToChar(Convert.ToInt32(Seriale.Substring(i+2, 2), 16));
  46.                             SerialeCHAR += Convert.ToChar(Convert.ToInt32(Seriale.Substring(i, 2), 16));
  47.                         }
  48.                         catch
  49.                         {
  50.                             Esadecimale = false;
  51.                         }
  52.                     }
  53.  
  54.                     if (Esadecimale)
  55.                     {
  56.                         listBox1.Items.Add("serialeHEX:    " + Seriale);
  57.                         listBox1.Items.Add("serialeCHAR: " + SerialeCHAR.Trim());
  58.                     }
  59.                     else
  60.                     {
  61.                         listBox1.Items.Add("seriale: " + Seriale);
  62.                     }
  63.  
  64.                     listBox1.Items.Add("");
  65.                 }
  66.             }
  67.             catch (Exception er)
  68.             {
  69.                 MessageBox.Show("ERRORE \n" + er.Message, "Errore", MessageBoxButtons.OK, MessageBoxIcon.Information);
  70.             }
  71.         }
  72.     }
  73. }



EDIT
Se il seriale è in esadecimale, nella conversione in CHAR le coppie dei caratteri devono essere inverite. Codice corretto.

Ultima modifica effettuata da Carlo il 17/10/2022 alle 14:40


in programmazione tutto è permesso
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 10:04
Domenica, 16/10/2022
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 nessuno il 16/10/2022 alle 10:33


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à.
PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo