2010-02-08 14 views
7

J'ai un problème avec Windows UAC, les tâches planifiées et un exécutable nommé "dbupdate.exe". J'ai plein pouvoir sur le code source, les manifestes et ainsi de suite, mais pas sur les systèmes d'utilisateur (court: ingénieur logiciel normal ;-). La langue est Delphi, mais ne devrait pas être important je pense.Exe nom comme update.exe bloqué par UAC dans la tâche planifiée

J'ai un problème en utilisant une application dans le planificateur de tâches dans Windows Vista et Windows 7. Le programme s'appelle dbUpdate.exe. Il a construit dans un manifeste xp/vista, qui configure que le programme devrait être lancé "asInvoker".

Maintenant, dans Vista et Windows 7, je peux démarrer le programme sans problème, mais je dois être connecté au système. Si je ne suis pas connecté, le programme n'est pas exécuté (j'utilise le planificateur de tâches Windows, mais je sais que le problème existe également avec d'autres programmes de planification). Mais: Si je renomme le programme en "dbBlaBla.exe" il est exécuté. Me conduit au point, que la détection d'installateur d'UAC pense que mon programme est un installateur (ce n'est pas, mais je sais qu'il regarde des noms de fichiers comme la mise à jour, l'installation et ainsi de suite). J'ai cherché sur le web, je n'ai pas trouvé beaucoup de choses utiles. Donc je demande ici

Dois-je créer un manifeste spécial pour pouvoir l'exécuter dans un travail planifié? Ou existe-t-il un moyen de désactiver le contrôle de compte d'utilisateur pour les tâches planifiées ou simplement pour mes exécutables? Ou dois-je vraiment choisir un autre nom (il travaillerait, comme mentionné plus haut) et de prendre le risque que les costumiers et mes collègues ne sont pas très satisfaits à ce sujet? $

Merci pour toute aide, salutations

+0

Les clients et les collègues seraient grandement insatisfaits si vous les appelez updatedb.exe ou upd_task.exe? On dirait que vous devriez juste le renommer, l'écrire pour savoir quand vous avez le temps (une question SO est bonne pour cela ..: P), et passer à des problèmes importants. (Vous êtes à mi-chemin.) –

+0

Eh bien, le point avec "passer à des problèmes importants" sonne bien ;-) mais malheureusement, il est un fait que le mot "mise à jour" est très commun dans notre société et a du sens pour les choses programme fait. Merci pour votre réponse – warheart

Répondre

6

Dans Windows 7, un programme nommé "update.exe" demande apparemment des privilèges. C'est apparemment le nom, et c'est juste une de ces choses Microsoft farfelues. Le renommer en "anythingUpdate.exe" déclenchera la violation de magie; "UpdateAnything.exe" aussi!

J'ai donc renommé mien en up7.exe et maintenant Microsoft est calme et non contentieux. La même chose semble se produire dans Vista.

Donc "updatedb.exe" ne fonctionnera pas; « Upd_task.exe » serait ...

+1

que l'on appelle [Installer Detection] (http://msdn.microsoft.com/en-us/library/windows/desktop/bb756960.aspx) vérifie si le nom de fichier _contains_ mots-clés comme "installer", "setup" , "" update ", etc. (malheureusement, ils ne spécifient même pas tous les mots-clés). Mais 'requestedExecutionLevel' mentionné par @warheart devrait remplacer la détection du programme d'installation. – marcin

+0

Mes programmes de mise à jour s'appellent maintenant * upda1e.exe. Je pense aussi qu'il est plutôt stupide de détecter les fonctionnalités basées sur le nom, je me demande qui est venu avec cette idée ... – nulleight

1

De http://social.msdn.microsoft.com/Forums/en-US/windowscompatibility/thread/1b316a7f-852e-4a71-89d3-090e45990f98

Le contrôle de compte d'utilisateur: détecter les installations d'applications et demander pour le réglage d'élévation doit être activé pour la détection d'installation pour détecter les programmes d'installation. Ce paramètre est activé par défaut et peut être configuré avec le composant logiciel enfichable Security Policy Manager (secpol.msc) ou avec la stratégie de groupe (gpedit.msc).

+0

Vous pouvez trouver le paramètre en exécutant 'secpol.msc', puis en allant sur Stratégies locales → Options de sécurité. –