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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Sistemas Operativos
| |-+  Windows (Moderador: Randomize)
| | |-+  Arrancar un programa sin llegar a ver el escritorio.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Arrancar un programa sin llegar a ver el escritorio.  (Leído 17,969 veces)
ikkaku

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Arrancar un programa sin llegar a ver el escritorio.
« en: 11 Marzo 2015, 17:02 pm »

Hola a todos !
Traigo una duda que me lleva atormentando varios dias.
Tengo una aplicacion hecha en Visual Studio ( C#) y  mas especificamente sirve para controlar todo lo relacionado con una tienda de repuestos.

Ahora viene la duda, como puedo hacer que al iniciar Windows se cargue mi aplicacion sin tener que pasar por el escritorio ? Lo de meterla en el menu Inicio ya lo he intentado pero tarda bastante en arrancar por lo que el trabajador tendria tiempo de pasearse por el escritorio, carpetas, menu Inicio etc. etc.
Yo lo que quiero es arrancar el ordenador y que despues del logo de Windows, mas tarde o mas temprano, se ejecute mi programa pero sin pasar por el Escritorio.

Otro tema es que tambien me gustaria que una vez arrancado el programa un usuario con mas privilegios ( jefe, tecnico...) pueda acceder al escritorio minimizando el programa. La programacion de eso lo tengo hecho pero me imagino que dentro de mi programa deberia arrancar primero el explorer.exe .

Espero que me podais ayudar.

Un saludo.


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Arrancar un programa sin llegar a ver el escritorio.
« Respuesta #1 en: 11 Marzo 2015, 18:58 pm »

Buenas

Si quieres iniciar una aplicación antes del inicio de la Shell (o la interfáz del Explorer), bajo Windows XP, Vista, 7, u 8 (aunque no lo he probado con todos), simplemente puedes modificar el valor userinit de la siguiente clave de registro:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon, que es un valor delimitado por comas, para añadir la ruta absoluta a tu aplicación, por ejemplo:

Código:
C:\Windows\System32\notepad.exe,C:\Windows\System32\userinit.exe



Sobre el tiempo de inicialización de tu aplicación desarrollada en C# (que dices que tarda bastante),
generalizando y por la naturaleza del JIT (Just-in-time compilation) un ensamblado .Net tarda bastante en inicializarse completamente (en comparación con otros binarios de otros lenguajes),
pero si quieres optimizar el tiempo transcurrido entre que se inicializa la aplicación y se muestra el Form principal, es decir, el boot-time (o Startup), entonces puedes utilizar el servicio NGEN (Native Image Generator), que reduce considerablemente el boot-time de cualquier ensamblado .Net debido a que, a diferencia del JIT, el ensamblado ya ha sido compilado a código de máquina (machine code) antes de iniciar la aplicación (el JIT siempre lo compila a código de máquina durante el Startup de la aplicación), pero por contra, al utilizar NGEN reducirás el rendimiento general de la aplicación, su tiempo de respuesta, aunque no llegarás a apreciar esa disminuición de rendimiento a menos que tu aplicación sea muy "pesada", aunque también podemos decir lo mismo sobre notar el tiempo transcurrido del startup entre NGEN <> JIT xD.

Ambos tienen sus beneficios y sus contras, tu decides que prefieres, el JIT para un startup lento con un rendimiento normal de la aplicación, o NGEN para un startup rápido con un rendimiento lento de la aplicación.



Otro tema es que tambien me gustaria que una vez arrancado el programa un usuario con mas privilegios ( jefe, tecnico...) pueda acceder al escritorio minimizando el programa. La programacion de eso lo tengo hecho pero me imagino que dentro de mi programa deberia arrancar primero el explorer.exe .

Y, digo yo, ¿por qué ese empeño en dejar sin patas a una mesa?, quiero decir, el escritorio es una parte importante de Windows, ¿que necesidad encuentras para querer ocultar el entorno del escritorio mientras el end-user utiliza tu app?.

De todas formas, es suficiente con matar e iniciar el proceso cuando lo creas conveniente, puedes recurrir a la utilización de la Class System.Diagnostics.Process para llevar a cabo ambas tareas.

Si tienes alguna duda sobre estos temas relacionado con C#, publícala en el subforo dedicado a la programación .Net y allí te ayudaré(mos).

PD: Cuando formules una pregunta sobre Windows, cómo mínimo especifica que versión utilizas, no somos magos.

Saludos!


« Última modificación: 11 Marzo 2015, 19:11 pm por Eleкtro » En línea



ikkaku

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Arrancar un programa sin llegar a ver el escritorio.
« Respuesta #2 en: 11 Marzo 2015, 20:10 pm »

He probado a modificar el registro Shell y el de userinit pero cuando reinicio vuelve a los valores predeterminados.

Lo que quería decir es que suponiendo que modificando el registro, explorer.exe no estaría ejecutado  y de alguna manera debería hacerlo mi programa. Lo que quiero es que no cualquiera pueda tener acceso al escritorio.

Perdón me olvide de decir que es Windows 7 64 bits.
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Arrancar un programa sin llegar a ver el escritorio.
« Respuesta #3 en: 12 Marzo 2015, 09:21 am »

Lo que quería decir es que suponiendo que modificando el registro, explorer.exe no estaría ejecutado  y de alguna manera debería hacerlo mi programa.

Entonces lo que pretendes hacer es deshabilitar la shell y punto, jeje.

Accede a la siguiente clave de registro:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon

Crea un nuevo valor de tipo REG_SZ con el nombre Shell (en caso de que no exista), y en los datos del valor especifica la ruta absoluta a tu programa (ej: C:\Application.exe).

ADVERTENCIA:
Lo que quieres hacer es interferir en el comportamiento del SO, y dicha modificación del registro prevendrá la inicialización de la Shell de Windows por tu propia Shell, es decir, no vas a poder acceder de forma natural a características cómo el menú contextual, o atajos del teclado (hotkeys) para iniciar aplicaciones cómo el administrador de tareas para inicializar el explorer manualmente (a menos que desde tu programa ejecutes el administrador de tareas o los programas que quieras).

Por ende, si haces la modificación del registro, primero prepara tu aplicación para que sea capaz de ejecutar el proceso 'explorer.exe', de lo contrario lo verás dificil para revertir el cambio;
puedes revertir la modificación eliminando el valor que creaste en el registro desde la misma cuenta de usuario (en caso de que pudieras acceder al regedit o correr un Script), o desde otra cuenta de usuario por ejemplo cargando el HIVE del registro del usuario que creó dicho valor.

Mi recomendación es que primero crees una nueva cuenta de usuario, te loguees en dicha cuenta, y desde allí haces la modificación en el registro para testear las capacidades de tu aplicación.

Saludos!
« Última modificación: 12 Marzo 2015, 09:33 am por Eleкtro » En línea



beholdthe


Desconectado Desconectado

Mensajes: 2.736


Ver Perfil
Re: Arrancar un programa sin llegar a ver el escritorio.
« Respuesta #4 en: 12 Marzo 2015, 16:37 pm »

Elektro como siempre un crack en este tipo de cosas.
Me has dado ideas para hacer otra cosilla similar a esta, gracias.
 ;-) ;-) ;-) ;-) ;-)
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Arrancar un programa sin llegar a ver el escritorio.
« Respuesta #5 en: 12 Marzo 2015, 20:30 pm »

Me has dado ideas para hacer otra cosilla similar a esta, gracias.
 ;-) ;-) ;-) ;-) ;-)

Genial, mientras no utilices esa información para hacer el mal xD.

Me alegro de que el "tip" le haya servido a alguien de utilidad.

Saludos
En línea



beholdthe


Desconectado Desconectado

Mensajes: 2.736


Ver Perfil
Re: Arrancar un programa sin llegar a ver el escritorio.
« Respuesta #6 en: 12 Marzo 2015, 20:43 pm »

Genial, mientras no utilices esa información para hacer el mal xD.

Me alegro de que el "tip" le haya servido a alguien de utilidad.

Saludos

Yo ya no tengo edad para hacer el mal. :D
No, es otra cosa, y me has dado la idea haciéndolo mediante el registro, que de esto controlas un montón.
En línea

ikkaku

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Arrancar un programa sin llegar a ver el escritorio.
« Respuesta #7 en: 13 Marzo 2015, 16:04 pm »

Entonces lo que pretendes hacer es deshabilitar la shell y punto, jeje.

Accede a la siguiente clave de registro:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon

Crea un nuevo valor de tipo REG_SZ con el nombre Shell (en caso de que no exista), y en los datos del valor especifica la ruta absoluta a tu programa (ej: C:\Application.exe).

ADVERTENCIA:
Lo que quieres hacer es interferir en el comportamiento del SO, y dicha modificación del registro prevendrá la inicialización de la Shell de Windows por tu propia Shell, es decir, no vas a poder acceder de forma natural a características cómo el menú contextual, o atajos del teclado (hotkeys) para iniciar aplicaciones cómo el administrador de tareas para inicializar el explorer manualmente (a menos que desde tu programa ejecutes el administrador de tareas o los programas que quieras).

Por ende, si haces la modificación del registro, primero prepara tu aplicación para que sea capaz de ejecutar el proceso 'explorer.exe', de lo contrario lo verás dificil para revertir el cambio;
puedes revertir la modificación eliminando el valor que creaste en el registro desde la misma cuenta de usuario (en caso de que pudieras acceder al regedit o correr un Script), o desde otra cuenta de usuario por ejemplo cargando el HIVE del registro del usuario que creó dicho valor.

Mi recomendación es que primero crees una nueva cuenta de usuario, te loguees en dicha cuenta, y desde allí haces la modificación en el registro para testear las capacidades de tu aplicación.

Saludos!

Muchas gracias Elektro.
El cambio de registro en HKEY Current user no ? Es que no estoy seguro y prefiero preguntar por no liarla.
He visto ademas que hay un programa que se llama Instansheller que lo modifica automaticamente con lo que tu le digas.Eso podria valerme ?

El tema de abrir el "explorer.exe" lo podria hacer con un System.Process.Start y llamar a explorer.exe o hay que hacerlo a traves del administrador de tareas ?

Un saludo.
« Última modificación: 13 Marzo 2015, 16:57 pm por ikkaku » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Arrancar un programa sin llegar a ver el escritorio.
« Respuesta #8 en: 13 Marzo 2015, 18:14 pm »

El cambio de registro en HKEY Current user no ? Es que no estoy seguro y prefiero preguntar por no liarla.
La raíz HKEY_LOCAL_MACHINE (o HKLM) afecta a todo el grupo de usuarios, y la rama HKEY_CURRENT_USER (o HKCU) afecta al usuario activo.
Si, realiza las modificaciones en HKCU.

He visto ademas que hay un programa que se llama Instansheller que lo modifica automaticamente con lo que tu le digas.Eso podria valerme ?
Ni idea de lo que es eso. He buscado "Instant Sheller" por curiosidad y me sale una aplicación para el emulador M.A.M.E de video juegos arcade...
No uses cosas raras si no estás seguro de para que sirven.

El tema de abrir el "explorer.exe" lo podria hacer con un System.Process.Start y llamar a explorer.exe o hay que hacerlo a traves del administrador de tareas ?
El explorer es un proceso y el taskmanager otro, son procesos cómo otros cualquiera, por ende, ¿por qué usar el taskmanager cómo medio para iniciar un proceso secundario, pudiendo iniciar el proceso directamente?.
Sí, puedes utilizar el método Start de la Class Process (System.Diagnostics.Process) para ejecutar el explorer.exe.

Saludos
« Última modificación: 13 Marzo 2015, 18:17 pm por Eleкtro » En línea



ikkaku

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Arrancar un programa sin llegar a ver el escritorio.
« Respuesta #9 en: 18 Marzo 2015, 17:38 pm »

Buenas !
Consegui hacerlo al final con el InstantSheller.
 En vez de poner el frontend que seria el emulador de las recreativas, he puesto mi programa con el botoncito que arranca el explorer.exe y todo perfecto. Lo que si tuve que hacer es desactivar el antivirus a la hora de establecer el programa de arranque por que no dejaba modificar el registro.

Un saludo y gracias :D
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
iniciar programa al arrancar windows
Programación Visual Basic
soru13 5 2,912 Último mensaje 17 Agosto 2006, 01:02 am
por ~~
Iniciar Programa sin llegar al SO y desabilitar conbinaciones de teclas
Dudas Generales
Mr.Blue 5 3,974 Último mensaje 8 Julio 2010, 21:43 pm
por winroot
El programa rompe al llegar a LoadLibrary
Análisis y Diseño de Malware
nts94 2 3,020 Último mensaje 14 Marzo 2012, 01:58 am
por nts94
Iniciar un programa al arrancar el PC.
Programación C/C++
vikour92 3 2,758 Último mensaje 27 Marzo 2012, 21:03 pm
por soyloqbuskas
¿Arrancar un programa en vez del sistema operativo?
Software
Kurolox 1 2,235 Último mensaje 19 Octubre 2012, 03:45 am
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines