Visual Basic 2005 :: Creando claves de registro para nuestras aplicaciones .NET
Artículo :: Programación :: Visual Basic 2005
Creando claves de registro para nuestras aplicaciones .NET
Cuando nos decidimos instalar una aplicación Software (Adobe PhotoShop, Microsoft Office, Microsoft Windows, etc), nos obliga a escribir una clave de aplicación más conocida como Serial.
Incluso dependiendo de la clave introducida, se instalará un tipo de producto u otro. Este mecanismo es muy sencillo. El usuario introduce una clave y ésta se valida de acuerdo a una serie de normas o reglas que permiten determinar el tipo de licencia o clave introducida.
En este breve artículo, veremos como generar nuestra clave de registro para nuestras aplicaciones .NET.
En concreto, recogeremos la entrada del usuario (nombre de usuario por ejemplo), y a partir de él, generaremos la clave de aplicación que cumpla la máscara (xxxxxx-xxxxxx-xxxxxx-xxxxxx-xxxxxx-xxxxxx-xxxxxx-xxxxxx).
En el formulario, hemos insertado dos controles Label, dos controles TextBox y un control Button.
En tiempo de diseño, nuestro formulario de demostración y ejemplo, tendrá una apariencia parecida a la que se indica en la figura 1.
Figura 1
Ahora bien, la acción de generación de esta clave se hace realizando diferentes cálculos.
Estos cálculos pueden ser modificados como deseemos para generar los valores de clave finales.
El código de mi particular generador es el siguiente:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Try ‘ Si el texto de usuario tiene mde 1 caracter, entonces seguimos adelante If Me.TextBox1.Text.Trim.Length > 1 Then ‘ Pasamos a la funciel texto de usuario para generar su ‘ clave de usuario de aplicaci Me.TextBox2.Text = GenerarClave(Me.TextBox1.Text.Trim) Else ‘ Mensaje de aviso de que el texto de usuario debe tener ‘ al menos dos caracteres MessageBox.Show(«Debe introducir al menos dos caracteres») End If Catch ex As Exception ‘ Mensaje de error en la generacide la clave de usuario MessageBox.Show(«Se ha producido un error en la generacide la clave») Me.TextBox2.Text = «Error» End Try End Sub Private Function GenerarClave(ByVal usuario As String) As String ‘ Obtenemos la longitud de la cadena de usuario Dim longitud As Byte = usuario.Length ‘ Declaramos valorEntrada para obtener el valor general ‘ correspondiente a la entrada de usuario Dim valorEntrada As Long = 0 ‘ Recorremos la cadena entera para sumar el valor ‘ total de sus cASCII For I As Byte = 0 To longitud – 1 valorEntrada += Asc(usuario.Substring(I, 1)) Next ‘ Dividimos el valor final resultante de la suma de ‘ sus valores ASCII entre la longitud de la cadena valorEntrada = longitud ‘ Obtenemos un valor base que corresponde con el ‘ cdel producto entre el valor de entrada ‘ anteriormente calcula por su longitud Dim valorBase As Integer = valorEntrada * longitud Dim key As String = «» ‘ Empezamos obteniento valores ‘ Obtenemos el valor hexadecimal Dim valor As String = Hex(valorBase + (123 * 10000)) key &= valor.Substring(valor.Length – 6, 6) ‘ Obtenemos el valor hexadecimal valor = Hex(valorBase + (98 * 12500)) ‘ Obtenemos el valor de clave key &= «-« & valor.Substring(0, 6) ‘ Obtenemos el valor hexadecimal valor = Hex(valorBase + (77 * 15000)) ‘ Obtenemos el valor de clave key &= «-« & valor.Substring(valor.Length – 6, 6) ‘ Obtenemos el valor hexadecimal valor = Hex(valorBase + (121 * 17500)) ‘ Obtenemos el valor de clave key &= «-« & valor.Substring(0, 6) ‘ Obtenemos el valor hexadecimal valor = Hex(valorBase + (55 * 20000)) ‘ Obtenemos el valor de clave key &= «-« & valor.Substring(valor.Length – 6, 6) ‘ Obtenemos el valor hexadecimal valor = Hex(valorBase + (134 * 22500)) ‘ Obtenemos el valor de clave key &= «-« & valor.Substring(0, 6) ‘ Obtenemos el valor hexadecimal valor = Hex(valorBase + (63 * 25000)) ‘ Obtenemos el valor de clave key &= «-« & valor.Substring(valor.Length – 6, 6) ‘ Obtenemos el valor hexadecimal valor = Hex(valorBase + (117 * 27500)) ‘ Obtenemos el valor de clave key &= «-« & valor.Substring(0, 6) ‘ Devolvemos el valor final (xxxxxx-xxxxxx-xxxxxx-xxxxxx-xxxxxx-xxxxxx-xxxxxx-xxxxxx) Return key End Function |
Este código de ejemplo, generará una clave tal y como se indica en la siguiente imagen.
Figura 2
Como podemos observar, la generación de claves de registro para nuestras aplicaciones .NET se pueden realizar de forma rápida y sencilla.
42 Responsesso far
Acabo de terminar un pequeño artículo de cómo crear claves de registro para nuestras aplicaciones .NET
Exelente Articulo.!!
Gracias Por Pulicarlos…
Espinete,
hace muchos años publiqué otra forma de crear claves de registro para mis aplicaciones, pero aquello era en VB 3.0 y ya hace mucho tiempo de aquello.
Desde entonces no he hecho algo similar hasta esto que he publicado ahora.
Que yo sepa, esto que he publicado no es estándar, pero es habitual encontrárnoslo en más y más aplicaciones Software. No se cómo lo harán otras empresas, pero esto que indico es una muestra de cómo podríamos hacerlo.
En realidad no creo que sea o cumpla ningún estándar. Son pequeñas «modas» de como hacer las cosas y complicar la vida a la gente para asegurar de «alguna forma» nuestras aplicaciones para evitar pirateos, etc.
Lo cierto es que no se evita pero se incomoda al pirata en cuanto a la distribución indebida del Software.
Muchas gracias por el post. Me ha servido de mucha ayuda. Saludos.
Primero que todo un saludo,
Entendi muy bien el articulo y el algoritmo que utilizaste para generar el codigo. Pero lo que quiero saber es como utilizo este codigo para evitar que me copien el programa ilegalemente.
Es decir como hago para validar los codigos en mi programa y asi lograr que solo usen la aplicacion aquellas personas que en realidad compraron la licensia del programa?
ccortesalzamora@gmail.com
Esto sirve para liberar parte de tu software, de acuerdo a el nombre. La clave sirve solo para validar el ingreso.
Pero la duda me asalta…Tengo la aplicacion y la instalo en un PC. El usuario podrá copiar la aplicacion tal como esta en su PC y pasarla a otro PC y que esta le funcione?
Como podriamos solucionar eso?
Asociar dentro del procedimiento de validación, una copia de un archivo(.txt..lo que sea) y que si ese existe, el programa parte. SINO el programa fué copy-pasteado.
Amigos…debe ser asi?
Me encantaría que funcionase.
Para validar que un software se haya registrado pueden guardar y encriptar los datos del registro atraves de un archivo externo oculto o guardando la informacion en el registro de windows
quisiera saber como crear un nombre de usuario y contraseña en tiempo de ejecucion. osea poder cambiarlos cuando ya se a ejecutado el programa.
como fazo para criar estoque em visual basic 2005, vc tem exemplo: simples
agradeço..
nilton
njnws@bol.com.br
Yo quisiera crear uno pero para foxpro 9.0 alguien sabe como hacerlo?
Hola que buen post….
Solo quisiera saber, alguien tiene el numero serial o de registro para el visual basic 2005 express edition… por favorrr, Maestros ayudenme.
Necesitaria si es posible, que me dijeran como hacer para crear una licencia para un proyecto que tengo en visual basic 2005 y que esta licencia tenga fecha de vencimiento, y pueda renovarse
desde ya agradecido de antemano…
Rodrigo
Excelente, gracias por la info…
no entiendo nada xq soy una estupida
Me parece bien tu ejemplo
pero porfavoir
e estado buscando como una maquina actue como servidor y que busque a los equipos que se encuentren en la red con el fin de que el servidor detecte cuando una maquina comunique con otras o algo de socket o winsocket
no se si podrias publicar algo q me pueda ayudar
o un manual
Hola necesitaria saber cual es la pagina web para entrar así pongo la clave de registro
mu bieennn
sabes esta chido y porque no me lo mandas a mi correo porfa ahi cunado puedas
Muy util codigo acas de poner…lo voy a agregar a uno de mis programillas
quisiera saber si hay algo parecido pero para visual basic 6
El ejemplo está muy bien, aunque yo generaría una primera clave a partir del numero de serie del disco duro en lugar de usar el nombre (existen funciones que ya hacen este trabajo). El usuario me enviaría un email con esta clave, y yo volvería a generar otra cadena, una contra-clave que le enviaría al usuario. Al entrar esta última, nuestra aplicación comprobaría si es correcta y de ser así permitiría la ejecución normal. En resumen, nuestra aplicación en cada ejecucion obtiene el serial del disco, calcula en funcion de éste la clave y también calcula la contra-clave. Si se copia en otro disco o incluso se clonase éste, nuestra aplicación lo detectaría. Cómo lo veis? xd
Hola,
Estoy haciendo un programa para mi familia pero necsito savr como ago los logins, pero que cada uno tenga uno pero no puedo, el login deberia ser con su nombre, contraseña y que ademas le muestre el codigo que se le fue asifnado para otros modulos, pero cuanod comentn un error y otra persona que no tenga su login no pueda acceder al sistema sino que le salga un error
jaime.calderon.uribe@hotmail.com
GRACIAS
RECIEN ESTOY INICIANDOME EN LA PROGRAMACION, Y DESEO ENCONTRAR UN LUGAR DONDE APRENDER A CREAR UN PROGRAMA DESDE CERO EN .NET 2005
….GRACIAS,
si pero esa clave es muy larga
no hay un original de visual ptm
es sencillo crear un codigo serial que sea especificamente para cierta maquina.
usen el codigo de ejemplo de esta pagina, pero en vez de solo usar «jorge», usen ademas el numero de serie del disco duro, por ahi hay varias paginas para obtenerlo.
bueno aqui se los pongo.
Private Function MostrarInformacionDeDisco()
Dim FS, d, t, Unidad ‘arturo.michaca@gmail.com
MostrarInformacionDeDisco = False
Unidad = «C»
Set FS = CreateObject(«Scripting.FileSystemObject»)
On Error GoTo MensajeError
Set d = FS.GetDrive(FS.GetDriveName(FS.GetAbsolutePathName(Unidad)))
Serie = d.SerialNumber
MostrarInformacionDeDisco = Serie
Exit Function
MensajeError:
MostrarInformacionDeDisco = False
End Function
ahora, manda el nombre del usuario, o nombre de empresa + num de serie del disco,en el mismo text box a partir del cual generarás la clave, al generarla, esa clave será unica por cada computadora donde instales, aunque el nombre de empresa sea el mismo.
espero que esto te sirva, nos vemos.
Hola quisiera quisiera me pudieran ayudar, mi problema es que hice una aplicación en .net pero cuando quiero que el administrador agregue un nuevo usuario valide que este sea válido (este debe coincidir con usuario válido de red windows NT), pero solo el usuario no la contraseña ni el dominio. Gracias.
me pregunta es la siguiente una ves que carge el progresbar quiero que enseguida carge el formulario para insertar el formulari de clave de ingreso al proyecto.
UN PROGRAMA PARA GENERAR CLAVE LA CUAL SE UTILICE SOLO UNA VEZ EL INGRESO NO PERMITA DE NUEVO SU CLAVE OTRA VES
Alguien tiene un manualde basic.net desde 0 para empezar por favor y algunos programas de inicio de ayuda, para iniciarme en .net
Ivan Medina
mi correo es vimesi_sa@hotmail.com para iniciar desde 0
Gracias
Aquí pueden descargar un manual de VB.Net, no recuerdo de donde lo he descargado. el pass del archivo comprimido es:
http://geeks.ms/blogs/jorge/pages/visual-basic-2005-creando-claves-de-registro-para-nuestras-aplicaciones-net.aspx
El link de descarga
http://rapidshare.com/files/335794818/Manual_Visual_Basic_.NET_725_paginas.rar
hola , le pedia que si me pudiera pasar el archivo , por estoy empezando con ello.
q buena ayuda muchas gracias
puedes hacerlo mas detayado
gracias por la ayuda los estera visitando mas para que me den un mejor forma de aser mis codigos
¿Cuál es el código para implementar en VB 3?
Esta muy bueno el tema.. pero, yo necesitaria este codigo pero en lenguaje C#, pero ahi no hay esas funciones para convertir a ASCII , ni hex, etc… como hacerlo?
abr_sk7@hotmail.com
gracias
HOLA , A TODOS POR FAVOR NECESITO VALIDAR UN TEXTBOX QUE NO PERIMITA INGRESAR NUMEROS, NI NI (NUMEROS+ LETRAS) SOLO NUMEROS.
POR FAVOR
ESTA CHEBRE EL TEMA , PERO NESETITO VALIDAR UN TEXBOX QUE NO PERMITA INGRESAR NUMEROS, (NUMEROS + LETRAS) , SOLO NUMEROS ,
POR FAVOR RESPONDAN
SALUDO CORDIAL, SE VE INTERESANTE EL TEMA
HAY MANERA DE ENVIARME INFORMACION DE COMO SERIA EN C# ESTE MISMO PROCESO,
ESTOY INICIANDOME EN ESTO DE LA PROGRAMACION Y ESTOY HACIENDO UN PEQUEÑO PROYECTO Y ME GUSTARIA APLICAR ESTA TECNICA
GRACIAS
CORDIAL SALUDO
ME GUSTARIA SABER COMO SERIA ESTA MISMA TECNICA EN C#