Foros del Web » Programación para mayores de 30 ;) » .NET »

[SOLUCIONADO] Cuando se pase de fecha, borrar el propio ejecutable.

Estas en el tema de Cuando se pase de fecha, borrar el propio ejecutable. en el foro de .NET en Foros del Web. Hola: He hecho ejecutables a clientes en el cual al final no paga y se van, eso si, por Internet. Mi idea, se que hay ...
  #1 (permalink)  
Antiguo 15/01/2016, 08:20
 
Fecha de Ingreso: mayo-2007
Ubicación: PIC-16F84A
Mensajes: 727
Antigüedad: 16 años, 10 meses
Puntos: 8
Cuando se pase de fecha, borrar el propio ejecutable.

Hola:

He hecho ejecutables a clientes en el cual al final no paga y se van, eso si, por Internet.

Mi idea, se que hay muchas y mejores de las que voy a contar, el mio es simple, no de hacer pero si de explicar.

Si hoy es día 15-01-2016 hora 15:30. Le entrego un ejecutable hecho con Visual C#, el que sea, simple como el propio Form1 con un botón que al pulsar dice Hola mundo. Si el día 29-01-2016 a la misma hora o la que sea, desde que ejecutes la aplicación haga lo siguiente.

Que borre el propio ejecutable.

Antes de eso, hace otra cosa, por ejemplo, el ejectubale se lo envio en .zip o .rar. ¿Qué hacer?
Que se ponga a buscar primero en el área local para que borre dichos archivos llamado nombre.zip o nombre.rar. Si no lo encuentra, acto seguido borra el nombre.exe.

Parece complicado a la hora de programar. Me conformo que se borre el propio ejecutable.

Se puede sugerir mejores métodos, eso si, tampoco quiero complicarme la vida.

¿Alguna sugerencia, ejemplos?

Saludos.
__________________
Meta Shell, VERSIÓN 1.2.2
Descargar
  #2 (permalink)  
Antiguo 15/01/2016, 08:25
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Cuando se pase de fecha, borrar el propio ejecutable.

Y solucionándolo de otra manera como por ejemplo:
- entregar el programa una vez pagado
- realizar un contrato de compra para poder reclamar en caso de no pagar
?
__________________
Aviso: No se resuelven dudas por MP!
  #3 (permalink)  
Antiguo 15/01/2016, 08:37
(Desactivado)
 
Fecha de Ingreso: enero-2015
Mensajes: 393
Antigüedad: 9 años, 3 meses
Puntos: 52
Respuesta: Cuando se pase de fecha, borrar el propio ejecutable.

No sirve de mucho tu solución.

De dónde tomás la "fecha actual"? De System.DateTime.Today? Y si el usuario cambia la fecha de la PC? y si se le acaba la pila del CMOS y la fecha se pierde y tiene cualquier valor? Y si el software está corriendo en un VirtualBox al cuál todos los días le cambian la fecha un día hacia atrás?

Además un ejecutable no puede borrarse a sí mismo, porque el archivo está en uso mientras está corriendo el programa.

El problema que vos planteás yo tuve que hacer un componente entero para resolverlo, que básicamente genera un Id único para cada PC, y consulta un web service mío para saber si esa PC tiene habilitado tal y tal software, el web service a su vez consulta una base de datos que tiene todos los Ids de las PCs de mis clientes. Me llevó semanas hacer todo el desarrollo.
  #4 (permalink)  
Antiguo 15/01/2016, 10:28
 
Fecha de Ingreso: mayo-2007
Ubicación: PIC-16F84A
Mensajes: 727
Antigüedad: 16 años, 10 meses
Puntos: 8
Respuesta: Cuando se pase de fecha, borrar el propio ejecutable.

Bueno.

Lo de retrasar el reloj si lo hace, lo detecta y se borra.

En cuanto a que no se borre el propio ejecutable cuando está corriendo. Se puede hacer que al ejecutarlo, crea otro ejecutable que no hace nada, solo una ventana invisible que cierra el ejecutable principal y luego borra, a parte de localiza el nombre.zip o nombre.rar si lo tienen lo más cerca posible.

El proceso sería así.

Dentro del programa principal lo que he hecho es crear otro ejecutable de prueba, en el cual cualquier antivirus me detecta, hay que tener cuidado.

El ejecutable puedo ponerlo llamado así nombre.dll. Al ejecutar el programa principal, crea copia dll (en realidad es un .exe que le cambié la extensión a .dll) como cebo y lo copia en lo más profundo del disco duro, donde le indiques.

Entrego estos dos programas.

Programa principal.exe
nombre.dll

El nombre.dll se copia en el disco duro donde quieras, se llamará como quieras pero con el nombre.exe.

Ese nuevo archivo copiado se ejecuta, comprueba hora y fecha, si se pasó el tiempo, se ejecuta cerrar la aplicación del programa principal y el borrado.



Espero que se entienda.
__________________
Meta Shell, VERSIÓN 1.2.2
Descargar
  #5 (permalink)  
Antiguo 15/01/2016, 10:32
(Desactivado)
 
Fecha de Ingreso: enero-2015
Mensajes: 393
Antigüedad: 9 años, 3 meses
Puntos: 52
Respuesta: Cuando se pase de fecha, borrar el propio ejecutable.

Todo muy lindo...

Y si le cambio el nombre al exe?

Apreto F2 y le pongo "pepito.exe" de nombre? cómo lo vas a detectar? Y si lo muevo a una carpeta que se me ocurra? agarro tu archivo nombre.exe y lo pongo en c:\micarpeta\miprograma.exe, cómo lo vas a detectar?
  #6 (permalink)  
Antiguo 15/01/2016, 11:27
 
Fecha de Ingreso: mayo-2007
Ubicación: PIC-16F84A
Mensajes: 727
Antigüedad: 16 años, 10 meses
Puntos: 8
Respuesta: Cuando se pase de fecha, borrar el propio ejecutable.

Hola:

Si pones por ti mismo el archivo dll a exe lo puedes hacer, supuestamente no debería saberlo el usuario, supuestamente. ;)

Si le cambias el nombre, ahora que lo dices, estoy bien jodido, jaajajjaja.

Saludos.
__________________
Meta Shell, VERSIÓN 1.2.2
Descargar
  #7 (permalink)  
Antiguo 15/01/2016, 14:08
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Cuando se pase de fecha, borrar el propio ejecutable.

Le estas dando demasiado vueltas cuando el problema lo tienes en el modelo de negocio: si das el programa antes de cobrar...
__________________
Aviso: No se resuelven dudas por MP!
  #8 (permalink)  
Antiguo 15/01/2016, 14:20
(Desactivado)
 
Fecha de Ingreso: enero-2015
Mensajes: 393
Antigüedad: 9 años, 3 meses
Puntos: 52
Respuesta: Cuando se pase de fecha, borrar el propio ejecutable.

Cita:
Iniciado por Malenko Ver Mensaje
si das el programa antes de cobrar...
Eso depende @Malenko, hay muchas formas de vender software: a veces el cliente quiere probar un tiempo el sistema a modo de "demo", otras veces puede pasar que le vendas el software para 1 PC pero el tipo simplemente copiando y pegando el ejecutable lo pueda usar en otros equipos.

La solución que yo comento arriba se ajusta a la mayoría de estos casos. Si bien no es a prueba de fuego, yo la utilizo en mis productos y no he tenido problemas de ningún tipo.
  #9 (permalink)  
Antiguo 15/01/2016, 14:45
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Cuando se pase de fecha, borrar el propio ejecutable.

Como puse antes, no veo problema en entregar el ejecutable siempre que esté todo bajo contrato y tengas asegurado el cobro.

Si se trata de entregar una versión demo/trial (creo que no es su caso), lo ideal es hacer algo similar a lo que propones (usando la Mac o algún identificar del PC) para controlar las instalaciones del software y su uso.
__________________
Aviso: No se resuelven dudas por MP!
  #10 (permalink)  
Antiguo 15/01/2016, 16:12
 
Fecha de Ingreso: mayo-2007
Ubicación: PIC-16F84A
Mensajes: 727
Antigüedad: 16 años, 10 meses
Puntos: 8
Respuesta: Cuando se pase de fecha, borrar el propio ejecutable.

Cita:
Iniciado por Malenko Ver Mensaje
(usando la Mac o algún identificar del PC) para controlar las instalaciones del software y su uso.
No se me había ocurrido. Buscaré algún código de ejemplo en C# sobre el MAC.

https://msdn.microsoft.com/es-es/lib...or=-2147217396

Herramientas para proteger ensamblados .Net y añadirles un periodo de evaluación o expiración o trial o como quieras llamarlo...:

http://www.ssware.com/cryptolicensin...ensing_net.htm
http://www.eziriz.com/

El programa que hago es para alguien específico, no público general.

Si, tiene que probarlo primero.

Saludos.
__________________
Meta Shell, VERSIÓN 1.2.2
Descargar
  #11 (permalink)  
Antiguo 25/01/2016, 15:17
 
Fecha de Ingreso: octubre-2015
Mensajes: 15
Antigüedad: 8 años, 6 meses
Puntos: 0
Exclamación Respuesta: Cuando se pase de fecha, borrar el propio ejecutable.

Hola, pues fijate que yo antes tenia un control asi y me funciono por mucho tiempo.
Por lo regular los programas que me pedian se ejecutaban en pc's con internet.
Entonces hice lo siguiente:
Me hice un hosting gratis, cualquier.. no importa el espacio que usaras, con que te permita usarlo para subir un solo archivo mas que suficiente.
Luego en el hosting subi un archivo php en blanco o con texto da igual.
digamos que le puse asi al archivo que subi al hosting: activado.php y su direccion seria asi: http://127.0.0.1/activado.php (donde esta 127.0.0.1 seria tu direccion de hosting gratis).
Ya luego hice esto en visual basic:
Formulario de inicio:
Código:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim linkurl
        linkurl = WebBrowser1.Url.ToString
        Label1.Text = linkurl
        If Label1.Text = "http://127.0.0.1/activado.php" Then
            MsgBox("Puedes seguir usando el programa")
        Else
            MsgBox("No puedes seguir usando el programa")
        End If
    End Sub
esa es la idea basica ya tu lo puedes modificar a tu gusto.
Como ves use un WebBrowser y su Visibilidad era false (osea invisible) en su propiedades de URL puse http://127.0.0.1/activado.php)
el label que puse igual invisible.
y ese codigo esta en un boton (bien podria ser la pantalla de login o algo ahi que lo permita continuar usado el programa.
Ya cuando no queria que usara el programa simplemente en mi hosting fui y cambie el nombre por desactivado.php y listo :d
espero te ayude mi idea es sencilla y sin mucho rollo jejeje un saludo.

Etiquetas: fecha, pase, propio, visual
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:54.