¿Por qué mis aplicaciones de ejecución automática funcionan de manera extraña en Vista?

StackOverflow https://stackoverflow.com/questions/15805

  •  08-06-2019
  •  | 
  •  

Pregunta

El producto en el que estamos trabajando permite al usuario configurarlo fácilmente para que se ejecute automáticamente cada vez que se inicia la computadora.Esto resulta útil porque el producto forma parte del entorno de trabajo básico de la mayoría de nuestros usuarios.
Esta característica se implementó no hace mucho tiempo y durante un tiempo todo estuvo bien, pero cuando comenzamos a probar esta característica en Vista, el producto comenzó a comportarse muy extraño al iniciarse.Específicamente, nuestro producto hace uso de otro producto (llamémoslo X) que lanza cada vez que necesita sus servicios.El problema real es que cada vez que X se inicia inmediatamente después de iniciar sesión, falla o informa errores críticos relacionados con el acceso al disco (esto sucede incluso cuando X se inicia directamente, no a través de nuestro producto).

Esto sucede cada vez que ejecutamos nuestro producto registrándolo en la tecla "Ejecutar" en el registro o colocando un acceso directo a él en el archivo "Puesta en marcha"carpeta dentro del"Menu de inicio", incluso cuando ponemos un retraso de ~20 segundos antes de comenzar a ejecutarse.Cuando cambiamos el retraso a 70 segundos, todo está bien.

Intentamos reproducir el problema iniciando nuestro producto manualmente inmediatamente después de iniciar sesión (haciendo doble clic en un acceso directo ubicado en el escritorio), pero fue en vano.

Ahora bien, ¿cómo es posible que aplicaciones que se ejecutan normalmente un minuto después de iniciar sesión informen errores tan graves cuando se inician inmediatamente después de iniciar sesión?

¿Fue útil?

Solución

Este es el efecto de una nueva característica en Vista llamada "Boxeo":Windows tiene varios mecanismos que permiten al usuario/administrador configurar aplicaciones para que se ejecuten automáticamente cuando se inicia Windows.Esta característica se utiliza principalmente para uno de estos propósitos:1.Programas que forman parte del entorno de trabajo básico del usuario, de forma que la primera acción que normalmente realizaría el usuario al iniciar el ordenador sería iniciarlos.2.Todo tipo de "agentes" en segundo plano: skype, messenger, winamp, etc.

Cuando se registran demasiados (o demasiado pesados) programas para ejecutarlos al inicio, el resultado final es que el usuario no puede hacer nada durante los primeros segundos/minutos después de iniciar sesión, lo que puede ser realmente molesto.Llega la función "Boxeo" de Vista:

Brevemente, Vista obliga a todos los programas invocados mediante la tecla Ejecutar a operar con prioridad baja durante los primeros 60 segundos después de iniciar sesión.Esto afecta a ambos Prioridad de E/S (que está configurada en Muy baja) y prioridad de CPU.Las solicitudes de E/S de muy baja prioridad no pasan a través del caché de archivos, sino que van directamente al disco.Por lo tanto, son mucho más lentos que las E/S normales.La duración del período de boxeo la establece el valor del registro:"HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\DelayedApps\Delay_Sec".

Para una explicación más detallada ver aquí y aquí

Otros consejos

El programa probablemente necesite más información en sus propiedades.Necesita "Ejecutar como", en lugar de simplemente ejecutarse.

Tal vez esta aplicación debería desarrollarse como un servicio, en lugar de ser un programa para iniciarse, o podría tener un servicio que inicie el programa cuando se determine la mejor ventana de oportunidad.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top