VB.NET – Crear una clave de licencia

En esta entrada te enseño a crear un sistema de claves de licencia para tu programa de forma fácil y sencilla para que puedas restringir el acceso solo a usuarios registrados.

Lo primero que haremos será generar una clave única para el equipo donde se ejecuta nuestro programa. Para ello podemos usar el número de serie del procesador, de la placa base o de la tarjeta gráfica, si no sabes cómo, puedes ver estas entradas del blog:

Estas funciones nos devolverán unas cadenas de texto parecidas a esto: FBDE12EF003BBADE y EFFBFBFF090306D9. Podemos complicar más la cosa pasando estas cadenas de texto a hexadecimal con esta otra función:

Public Shared Function StringToHex(ByVal text As String) As String
    Try
        Dim hex As String = ""
        For i As Integer = 0 To text.Length - 1
            hex &= Asc(text.Substring(i, 1)).ToString("x").ToUpper
        Next
        Return hex.ToUpper
    Catch ex As Exception
            Return ""
    End Try
End Function

Usamos la función StringToHex de este modo:

'Obtenemos los números de serie de CPU Y placa base
Dim Serials as String = GetProcessorID() & GetMBSerial()
'Pasamos el string devuelto a hexadecimal
Dim SerialsEnHEx as string = StringToHex(Serials)
'Generamos la clave de licencia
Dim ClaveLicencia as String = CreateSerialKey(SerialsEnHex)

Esto nos devolvería un String parecido a este: DEB1-E21C-FAB3-H1E5. Esta sería la clave de licencia para activar tu programa en la máquina del cliente.

Y esta es la función en cuestión que nos devuelve la clave de licencia, está comentada para que sea fácil de entender:

 Public Shared Function CreateSerialKey(ByVal text As String) As String
        Try
            text = text.Remove(16, (text.Length - 16)) 'Nos quedamos con los primeros 16 caracteres del string
            text = text.Insert(4, "-") 'Añadimos un guión (-) después del carácter 4
            text = text.Insert(9, "-") 'Añadimos un guión (-) después del carácter 9
            text = text.Insert(14, "-") 'Añadimos un guión (-) después del carácter 14
            Return text.ToUpper 'Devolvemos el string en mayúsculas
        Catch ex As Exception
            Return ""
        End Try
    End Function

Si te ha servido de ayuda, deja un comentario más abajo. Te lo agradezco mucho!.

Deja un comentario