elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Crear proceso con nombre basado en cmd
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Crear proceso con nombre basado en cmd  (Leído 3,159 veces)
motocros_elche


Desconectado Desconectado

Mensajes: 897


Yona http://www.youtube.es/YonaTutorials


Ver Perfil WWW
Crear proceso con nombre basado en cmd
« en: 17 Enero 2015, 11:02 am »

Buenas, estoy tratando de crear una forma de autoupdate de un servidor de un juego y tengo el siguiente problema:

El archivo que inicia el servidor es un .bat así:
RustDedicated.exe -batchmode +server.hostname "Nombre del servidor"

Y tengo otro .bat que incluye un texto con las lineas que actualizan el servidor y una vez hecho ejecuta el .bat mencionado arriba.

(Cuando aparece una nueva actualización el servidor se cierra automáticamente).

Entonces mi idea ha sido utilizar un programa el cual comprueba que el proceso este abierto y si no lo está ejecuta el .bat que actualiza e inicia de nuevo el servidor.

Y aquí el problema:
Los .bat usan el proceso cmd, todos usan el mismo proceso/archivo, que es básicamente la consola, lo que necesito es que tengan un nombre distinto, no se si es posible hacer esto, he pensado en duplicar el archivo cmd.exe pero claro por defecto los .bat utilizan el cmd predeterminado, también he pensado en convertir el .bat a .exe pero no sé si esto tendría algún efecto diferente o si efectivamente tendría el nombre del .exe el propio proceso.

Puedo probar cualquier cosa que me recomendéis, gracias de antemano, un saludo.


« Última modificación: 17 Enero 2015, 11:11 am por motocros_elche » En línea

_Enko


Desconectado Desconectado

Mensajes: 538



Ver Perfil WWW
Re: Crear proceso con nombre basado en cmd
« Respuesta #1 en: 17 Enero 2015, 15:42 pm »

El .bat ejecuta a RustDedicated.exe... ese es el nombre de proceso que deberías ver si está abierto creo.


Otra alternativa es usar en el .bat siguiente linea al principio
Código:
title titulo_de_la_ventana


De esa manera en vez de decir:  c:/WINDOWS/system32..... va a decir:
titulo_de_la_ventana

Luego usas algo como FindWindow y GetWindowText de la winapi para buscar una ventana con ese titutlo.
http://msdn.microsoft.com/en-us/library/windows/desktop/ms633499%28v=vs.85%29.aspx

Saludos.


« Última modificación: 17 Enero 2015, 15:51 pm por _Enko » En línea

sabeeee

Desconectado Desconectado

Mensajes: 155


Ver Perfil
Re: Crear proceso con nombre basado en cmd
« Respuesta #2 en: 17 Enero 2015, 16:14 pm »

Recomendaría que lo hagas desde C/C++ todo, hasta lo que pude entender.
En línea

"Vengándose, uno iguala a su enemigo; perdonando, uno se muestra superior a él."
Francis Bacon
motocros_elche


Desconectado Desconectado

Mensajes: 897


Yona http://www.youtube.es/YonaTutorials


Ver Perfil WWW
Re: Crear proceso con nombre basado en cmd
« Respuesta #3 en: 17 Enero 2015, 19:13 pm »

El .bat ejecuta a RustDedicated.exe... ese es el nombre de proceso que deberías ver si está abierto creo.
Si veo ese proceso pero también el de cmd digamos que se usan ambos pero cuando se cierra uno y el programa que comprueba si esta cerrado ejecuta el .bat empieza a volverse loco y a abrir todo el rato uno nuevo ya que tengo otro servidor abierto y ambos usan un mismo proceso con distinta id, pero el programa se vuelve loco como digo por el nombre del proceso más que nada.

Otra alternativa es usar en el .bat siguiente linea al principio
Código:
title titulo_de_la_ventana


De esa manera en vez de decir:  c:/WINDOWS/system32..... va a decir:
titulo_de_la_ventana

Luego usas algo como FindWindow y GetWindowText de la winapi para buscar una ventana con ese titutlo.
http://msdn.microsoft.com/en-us/library/windows/desktop/ms633499%28v=vs.85%29.aspx

Saludos.
Eso había visto pero claro el programa que utilizo me da muchas opciones y lo de la ventana pues me tocaría hacer lo que dices que ya es más tarea aun que no es mala idea.


Recomendaría que lo hagas desde C/C++ todo, hasta lo que pude entender.
Esa sería la solución ideal.
______________

He convertido el .bat a un .exe y ha funcionado a la primera (la conversión y ejecución no sé que tal se lo tomará el programa que comprueba el proceso abierto supongo que bien, aún que sería mejor poner todo en el mismo .bat/exe)

el problema que tengo es que cuando lo convierto la web de virustotal me detecta varios posibles virus, y con otro conversor me detecta muchos más pero no se si realmente son falsas alarmas o no, el código .bat obviamente no tiene nada de virus y escaneandolo tampoco da, pero claro puede ser que el .exe convertido tenga procesos normales que la web de virustotal los detecta como peligrosos.

Este es el resultado:
https://www.virustotal.com/es/file/9eb249220b8ec3de2a9991013eb49631d1de0cc1a81d2131e592368a2a8b8f3b/analysis/1421517654/

Este es el conversor que he usado:
http://www.f2ko.de/programs.php?pid=b2e

Sacado de este vídeo el cual tiene bastantes visitas y likes lo que da más confianza:
https://www.youtube.com/watch?v=Jn4iEwc71hE


Creo que ya se podría dar por solucionado excepto por el posible virus pero me da a mi que es falsa alarma, aún no lo he pasado al servidor dedicado por que no me fío y prefiero leer al menos una opinión antes.

Muchas gracias a todos por vuestra ayuda, una vez logre hacerlo pongo la explicación en el post, saludos.
En línea

sabeeee

Desconectado Desconectado

Mensajes: 155


Ver Perfil
Re: Crear proceso con nombre basado en cmd
« Respuesta #4 en: 17 Enero 2015, 19:39 pm »

http://sourceforge.net/projects/batchcompiler/ Ese es muy pero muy bueno en mi opinion, yo estoy haciendo un código que traduce realmente el bat a un c, podrías poner el código de tu bat y quizás te podamos ayudar mas.
En línea

"Vengándose, uno iguala a su enemigo; perdonando, uno se muestra superior a él."
Francis Bacon
motocros_elche


Desconectado Desconectado

Mensajes: 897


Yona http://www.youtube.es/YonaTutorials


Ver Perfil WWW
Re: Crear proceso con nombre basado en cmd
« Respuesta #5 en: 18 Enero 2015, 08:23 am »

http://sourceforge.net/projects/batchcompiler/ Ese es muy pero muy bueno en mi opinion, yo estoy haciendo un código que traduce realmente el bat a un c, podrías poner el código de tu bat y quizás te podamos ayudar mas.

Muchas gracias, está bastante bien y tiene bastantes opciones.

Por lo que veo cualquier conversor que convierte el .bat a .exe después el .exe aparece como "infectado" pero me parece a mi que eso es totalmente falso.
Link de virustotal: https://www.virustotal.com/es/file/e19839b6b7266ce6b71c62b61d9fd6d73488f6722a45454026f993048ebe5386/analysis/1421565444/

Código del .bat (ya lo he puesto todo en uno):
Código:
@echo off
steamcmd +@ShutdownOnFailedCommand 0 +@NoPromptForPassword 1 +login anonymous +force_install_dir F:\RustTest\Rust2 +app_update 258550 validate +quit
@echo off
echo ----------------------------------------
echo Download Completed
echo ----------------------------------------
TIMEOUT 5
@echo off
echo-----------------------------------------
echo Restarting Server
echo-----------------------------------------
@echo off
cd
cd F:\RustTest\Rust2
RustDedicated.exe -batchmode +server.hostname "Nombre del Server" -load +server.port 28017 +server.identity "data" +server.seed 89898989 +rcon.port 5678 +rcon.password "PASS" -server.worldsize 4000 -server.radiation false +server.saveinterval 60 -cfg "server\data\cfg\server.cfg" -logFile "log.txt" -autoupdate

Es bastante simple, voy a proceder a testear el autorestart, saludos.
En línea

motocros_elche


Desconectado Desconectado

Mensajes: 897


Yona http://www.youtube.es/YonaTutorials


Ver Perfil WWW
Re: Crear proceso con nombre basado en cmd
« Respuesta #6 en: 25 Enero 2015, 13:17 pm »

Bueno he de decir que ha funcionado todo perfectamente, muchas gracias a todos por vuestra ayuda.

Lo que hice fue convertir ese .bat a un .exe y después utilizar una aplicación que monitoriza ese .exe y en caso de que sea cerrado vuelve a abrirlo.

(Cuando lanzan una actualización el servidor puesto en el .exe se cierra de golpe con lo cual el programa que monitoriza el .exe vuelve a abrirlo y este cada vez que inicia revisa si hay actualizaciones y las aplica y seguidamente inicia el servidor).

Me pillo durmiendo cuando actualizaron y se actualizó perfectamente, ahora es uno de los primeros servidores en ser actualizado gracias a esto y yo no tengo que estar atento a si actualizan o no, para ver si han actualizado miro el .log de programa que monitoriza y me aparece toda la info de cuando ha sido reiniciado el .exe etc.

Resumen, la mejor solución ha sido convertirlo a .exe y utilizar un programa que en caso de que se cierre esa aplicación se vuelva a ejecutar.

Saludos.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
obtener el nombre de la ventana de un proceso
Programación Visual Basic
70N1 3 2,589 Último mensaje 5 Marzo 2009, 17:14 pm
por 70N1
Cambiar el nombre de un proceso.
Software
777Rubenix777 1 5,287 Último mensaje 18 Mayo 2010, 15:24 pm
por Saberuneko
cambiar nombre del proceso
Ingeniería Inversa
arabik 0 1,846 Último mensaje 25 Junio 2012, 19:32 pm
por arabik
Crear proceso en C con Codeblocks que no muera al matar al proceso padre
Programación C/C++
DrKillador 6 4,341 Último mensaje 15 Julio 2013, 13:39 pm
por DrKillador
cambiar de nombre a un proceso
Programación C/C++
snowspring 1 1,307 Último mensaje 4 Diciembre 2018, 20:11 pm
por AlbertoBSD
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines