Programación General > Visual Basic 6.0 e inferiores
Re: Problema. URGENTE POR FAVOR
ROBER.29:
Estimados compañeros,
Tengo el siguiente problema, he echo una aplicación la cual se instala en un servidor y se ejecuta en los terminales. Es decir, existen 17 ordenadores conectados en red a un servidor con windows nt server, mi aplicación está instalada en el servidor y en los otros ordenadores simplemente hay un acceso directo al ejecutable de mi aplicación.
Pues bien el cliente me ha pagado por 17 licencias pero ahora mismo se conecta más ordenadores y les pone el acceso directo puede utilizarlas, por lo tanto quiero saber la forma de poder evitar esto. Es decir quiero que en todo momento solo se pueda estar ejecutanto en 17 puestos a la vez, que cuando vaya a conectarse otro si ya estan los 17 que le diga que no dispone de licencia. Como lo puedo hacer?
Muchas gracias por atenderme. Espero haberme explicado con claridad.
Saludos,
Roberto García.
Jaume:
Si usas una base de datos crea una tabla que sea de contadores. Cada vez que alguien entre en la aplicación, por ejemplo en el evento Load de la pantalla inicial, haces un Select Max del campo ContadorInicio (por ejemplo) y lo updates con el valor que te retorne +1, siempre y cuando este valor no sea 17, o el que te interese. En caso contrario cierras la aplicación.
No es difícil
Salu2
J.M.Movilla:
A mi entender, la solución que plantea Jaume únicamente limita el número de usuarios que pueden abrir simultáneamente la aplicación; pero con tal de que no estén activos más de 17, la aplicación puede ejecutarse desde 200 equipos.
Mi solución es la siguiente:
Primero: En cada equipo con licencia abres un directorio con el nombre, por ejemplo, de tu aplicación ("miAplicac", para mi ejemplo)
y en el mismo copias el fichero UsuSetup.mdb que te adjunto. ¡¡¡Atención!!! Cada usuario tendrá grabado en el campo PdeP su propia Clave de Acceso (Palabra de Paso), que ha de coincidir con la que tú definas en el registro correspondiente a ese número de usuario en el otro fichero PrgSetup.mdb, que también te adjunto.
Esa Clave de acceso, estará lógicamente encriptada.
Segundo: En el Servidor, en el directorio de tu propia aplicación, grabas el fichero antedicho PrgSetup.mdb, y encriptas también este fichero.
Previamente, en PrgSetup.mdb habrás generado los 17 registros para tus 17 usuarios, y en cada uno habrás grabado encriptada la clave de acceso correspondiente, en el campo PdeP
Puedes en este fichero incrementar nuevos campos, como puede ser por ejemplo la ruta para la base de datos común de la aplicación, por si no quieres tenerla en App.Path; el nombre personalizado de cada usuario, por si quieres hacer esquisiteces...
Tercero: En el Objeto inicial de tu proyecto, lo primero que haces es pedir al usuario su Número de Usuario que volcarás en una variable NumUsu, por ejemplo; luego desencriptas el fichero App.Path & "Prgsetup.mdb". lo abres y ejecutas un MoveNext hasta situarte en el registro correspondiente al NumUsu; defines una variable MiControl = M_Empres!PdeP
Cuarto: Abres el fichero "C:MiAplicacUsuSetup.mdb"; la tabla "M_Usuar" y comparas si el campo "PdeP" es igual a la variable "MiControl". De esta forma cada usuario tiene que tener una sóla clave. Si la comparación es falsa, haces un End tras presentar mensaje de que "Usted no es el Usuario Núm. " & NumUsu.
Puedes incluso añadir el nombre propio del usuario, para que quede personalizado... Eso a gusto del consumidor.
Quinto: Luego desencriptas MiControl y preguntas al usuario su palabra de paso, para dárselo si coincide con el password que le habías grabado tú.
Naturalmente tienes que trabajarte este sistema, haciéndote una rutina externa con la cual crear los registros de cada usuario con su password encriptado, y que al mismo tiempo genere un fichero UsuSetup.mdb con una tabla M_Usuar que contenga esa misma clave en su campo PdeP
Saludos y suerte
Jaume:
ROBER.29 ha pedido que solo se puedan ejecutar 17 ejecutables a la vez, independientemente de las máquinas que puedan tener la aplicación.
Tu respuesta es correcta, y es buena para personalizar el programa, pero te obliga a generar un proceso de mantenimiento de usuarios, puesto que no puedes desplazarte tú cada vez que un empleado cause baja, o se incorpore uno nuevo que deba tener la aplicación.
Igualmente podrán tener la aplicación en tantas máquinas como quieran, puesto que el usuario no depende de la máquina, por lo que estamos en las mismas.
ROBER.29 debe decidir qual le interesa más.
Salu2
J.M.Movilla:
Hola Jaume: por supuesto que es Roberto quien tiene la última palabra.
Yo he interpretado que a él le duele el que estén usando su programa desde equipos para los cuales él no ha cedido la licencia; por eso le he presentado mi versión, con la que creo que puede controlar precisamente ese abuso de su cliente.
Si tuviera que afinar más e impedir que se use desde equipos distintos a los predeterminados, podría grabar en el PrgSetup el nombre interno de cada máquina. Pero eso sólo en el caso de que haya un informático interesado en hacerle a Roberto la pascua...
Con tu versión sospecho que podrán seguir utilizándola los 200 equipos para los que él no ha autorizado su uso. Eso es lo que yo entiendo.
En todo caso, perdona si interpretas que me he metido donde tú ya habías sentado plaza; mi idea es que en un foro puede uno meter baza, e incluso meter la pata, como hacemos muchas veces con la mejor intención.
Un abrazo a ambos
Navegación
[#] Página Siguiente
Ir a la versión completa