Se ti basi solo sul seriale di Windows ..... sei a posto!!!! Con tutte le copie taroccate che ci sono in giro!
Potresti invece basare il tuo codice da trasmettere su una combinazione fatta di seriali e configurazioni.
Faccio un esempio:
Con GetVolumeInformation ottieni il seriale dell'HardDisk sul quale è installato il tuo programma (o risiede il tuo file Excel)
In HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion trovi il seriale di Windows
Con questo
Public Function MBSerialNumber() As String
'RETRIEVES SERIAL NUMBER OF MOTHERBOARD
'IF THERE IS MORE THAN ONE MOTHERBOARD, THE SERIAL
'NUMBERS WILL BE DELIMITED BY COMMAS
'YOU MUST HAVE WMI INSTALLED AND A REFERENCE TO
'Microsoft WMI Scripting Library IS REQUIRED
Dim objs As Object
Dim obj As Object
Dim WMI As Object
Dim sAns As String
Set WMI = GetObject("WinMgmts:")
Set objs = WMI.InstancesOf("Win32_BaseBoard")
For Each obj In objs
sAns = sAns & obj.SerialNumber
If sAns < objs.Count Then sAns = sAns & ","
Next
MBSerialNumber = sAns
End Function
ti trovi il seriale della Motherboard.
Sommi i tre numeri (ognuno di questi lo converti in numero sommando i valori dei codici ANSI associati), applica un algoritmo predefinito (al limite eleva al quadrato il numero risultante) e fatti inviare questo.
In risposta devi inviare un numero a cui il tuo programma applichi un altro algoritmo che, unito col numero generato sulla macchina del cliente ritorni 0.
In questo modo, riesci ad identificare la macchina, il disco e la copia di Windows ottenendo una combinazione univoca.