2009-06-15 7 views
2

J'ai une application qui exécute une application de mise à niveau automatiquement quand elle démarre. Cependant, lorsque la première application démarre et voit qu'une mise à niveau est nécessaire, elle lance l'upgrader et échoue en raison de la sécurité dans Vista. Si je lance l'upgrader manuellement en tant qu'administrateur, il fonctionne correctement.Exécuter l'application par programme sous Vista

1) Comment puis-je le faire automatiquement à partir de la première application?

2) Si je définis les propriétés à lancer en tant qu'administrateur, j'obtiens la boîte de dialogue de sécurité ... comment puis-je la lancer sans aucune boîte de dialogue de sécurité/autorisation Vista?

Merci pour l'aide !!

Répondre

4

Vous voulez donc lancer une installation qui nécessite des droits d'administrateur sans droits d'administrateur? Parce que, vous savez, avec UAC activé, le lancement d'une application avec des droits d'administrateur nécessite la boîte de dialogue par définition. C'est tout le problème.

N'essayez même pas cela. Regardez Firefox, une application décente avec mise à jour automatique. Vous devrez confirmer le dialogue de consentement pour chaque mise à jour, et c'est très bien. Parce que si l'utilisateur ne le veut pas, il peut désactiver l'UAC. Mais c'est son problème, pas le vôtre. Vous n'êtes pas censé désactiver UAC de/pour votre programme. C'est comme un invité nécessitant le déverrouillage de toutes les portes pour entrer quand vous pouvez simplement sonner la cloche à la porte d'entrée.

Intégrez un manifeste dans le programme de mise à jour qui spécifie requireAdministrator. Cela affichera la boîte de dialogue de consentement si l'utilisateur a UAC activé, et fonctionnera parfaitement si l'utilisateur a UAC désactivé. En ce qui concerne la solution 1 de Reed Copsey: Si votre programme de mise à jour est un service, les gens pourraient ne pas aimer cela. À moins que vous ne soyez une entreprise de confiance, disons, Anti-Virus, cela pourrait sérieusement nuire à votre réputation.

+0

Il s'agit d'une application commerciale, donc la désactivation de l'UAC dépend de l'utilisateur, pas de nous, donc je suppose que ce n'est pas une solution souhaitable. Comme pour un service, je suis d'accord. – LilMoke

-1

Une approche simple serait de désactiver le UAC de Vista. Des informations sur la façon de le faire peuvent être trouvées au http://www.vista4beginners.com/How-to-disable-UAC. Une faille évidente de cette méthode est qu'elle affectera toutes les applications, ce qui peut poser un problème de sécurité. Si la sécurité est une préoccupation, vous voudrez peut-être suivre une autre méthode.

+0

Ce n'est pas seulement simple ou un problème de sécurité, c'est la solution d'un utilisateur au problème. Cela ne résout pas le problème original du point de vue de l'application. – OregonGhost

1

Si vous essayez de le faire sur votre propre système, la désactivation de l'UAC, as suggested by I3a0 fonctionnera.

S'il s'agit d'un logiciel que vous déployez sur d'autres systèmes, je crains qu'il n'y ait pas de moyen direct de le faire. Éviter le dialogue de sécurité serait complètement vaincre le système UAC - s'il y avait un moyen facile de contourner le problème, ce serait inutile. Le dialogue existe parce que vous faites quelque chose qui nécessite des permissions élevées.

Il y a deux options:

1) Ressaisissez votre upgrader en tant que service, avec une certaine forme d'IPC à partir de votre application de l'espace utilisateur qui notifie la mise à niveau. Cela lui permettrait d'être installé sur le système en tant qu'administrateur et de s'exécuter en arrière-plan, de sorte qu'il avait déjà des privilèges d'administration lorsque vous avez demandé une mise à niveau.

2) Déterminez ce qui nécessite spécifiquement des privilèges élevés dans votre application de mise à niveau, et retravaillez ces sections afin de pouvoir les exécuter en tant qu'utilisateur normal.

Questions connexes