Pourquoi mes applications exécutées automatiquement se comportent-elles bizarrement sous Vista ?

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

  •  08-06-2019
  •  | 
  •  

Question

Le produit sur lequel nous travaillons permet à l'utilisateur de le configurer facilement pour qu'il s'exécute automatiquement au démarrage de l'ordinateur.Ceci est utile car le produit fait partie de l’environnement de travail de base de la plupart de nos utilisateurs.
Cette fonctionnalité a été implémentée il n'y a pas si longtemps et pendant un certain temps tout allait bien, mais lorsque nous avons commencé à tester cette fonctionnalité sur Vista, le produit a commencé à se comporter vraiment bizarrement au démarrage.Plus précisément, notre produit utilise un autre produit (appelons-le X) qu'il lance chaque fois qu'il a besoin de ses services.Le problème réel est que chaque fois que X est lancé immédiatement après la connexion, il plante ou signale des erreurs critiques liées à l'accès au disque (cela se produit même lorsque X est lancé directement - et non via notre produit).

Cela se produit chaque fois que nous exécutons notre produit en l'enregistrant dans la clé "Exécuter" du registre ou en plaçant un raccourci vers celui-ci dans le champ "Démarrer" dossier à l'intérieur du "Le menu Démarrer", même si nous mettons un délai d'environ 20 secondes avant de commencer réellement à fonctionner.Lorsque nous avons modifié le délai à 70 secondes, tout va bien.

Nous avons tenté de reproduire le problème en lançant notre produit manuellement immédiatement après la connexion (en double-cliquant sur un raccourci placé sur le bureau) mais en vain.

Maintenant, comment est-il possible que des applications qui s'exécutent normalement une minute après la connexion signalent des erreurs aussi graves lorsqu'elles démarrent immédiatement après la connexion ?

Était-ce utile?

La solution

C'est l'effet d'une nouvelle fonctionnalité de Vista appelée "Boxing" :Windows dispose de plusieurs mécanismes qui permettent à l'utilisateur/administrateur de configurer des applications pour qu'elles s'exécutent automatiquement au démarrage de Windows.Cette fonctionnalité est principalement utilisée à l'une des fins suivantes :1.Programmes qui font partie de l'environnement de travail de base de l'utilisateur, de sorte que la première action que l'utilisateur effectue habituellement au démarrage de l'ordinateur est de les démarrer.2.Toutes sortes d'"agents" d'arrière-plan - Skype, Messenger, Winamp, etc.

Lorsque trop de programmes (ou trop lourds) sont enregistrés pour s'exécuter au démarrage, le résultat final est que l'utilisateur ne peut rien faire pendant les premières secondes/minutes après la connexion, ce qui peut être vraiment ennuyeux.Vient ensuite la fonctionnalité « Boxing » de Vista :

En bref, Vista force tous les programmes invoqués via la touche Exécuter à fonctionner avec une faible priorité pendant les 60 premières secondes après la connexion.Cela affecte à la fois Priorité E/S (qui est définie sur Très faible) et priorité CPU.Les requêtes d'E/S de très faible priorité ne transitent pas par le cache de fichiers, mais vont directement sur le disque.Ainsi, ils sont beaucoup plus lents que les E/S classiques.La durée de la période de boxe est définie par la valeur du registre :"HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\DelayedApps\Delay_Sec".

Pour une explication plus détaillée, voir ici et ici

Autres conseils

Le programme a probablement besoin de plus d'informations dans ses propriétés.Il doit "Exécuter en tant que", au lieu de simplement s'exécuter.

Peut-être que cette application devrait être développée en tant que service, au lieu d'un programme à lancer, ou vous pourriez avoir un service qui lance le programme lorsqu'il détermine la meilleure fenêtre d'opportunité.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top