D'accord, j'ai trouvé un moyen de le faire sans trop de tracas ni d'exposer un mot de passe en clair .
Tout d'abord, vous devez activer le compte d'administrateur. C'est la partie la plus gênante. J'ai configuré mon compte normal pour la connexion automatique, mais il est gênant que le compte administrateur soit disponible sur l'écran de connexion, même si je ne le vois jamais vraiment. Certains pourraient se plaindre qu'en exposant le compte administrateur, le système sera un peu moins sécurisé. Toutefois, comme vous devez définir un mot de passe pour le compte afin de pouvoir l'utiliser à partir de la ligne de commande, cette préoccupation est sans objet.
La méthode que j'ai choisie nécessite l'utilisation d'une sorte de programme SHELLEXECUTE qui prend en charge les programmes en cours d'exécution minimisés. (On pourrait utiliser la commande START intégrée à l'interpréteur de commandes CMD à la place, mais cela ferait clignoter une fenêtre d'invite de commande alors qu'un programme non console sans fenêtre éviterait cela.) Il y a beaucoup de choix, mais j'en J'ai écrit il y a longtemps.
Maintenant, créez simplement une entrée de registre dans la clé RUN qui appelle ShellExecute, en spécifiant l'option de réduction et en utilisant RUNAS en tant que programme à exécuter. (Si vous préférez, certains programmes peuvent exécuter un programme avec un compte différent, mais RUNAS est fourni avec Windows et peut enregistrer le mot de passe pour éviter de l'inclure dans la ligne de commande.) Vous pouvez également créer un raccourci Windows normal et le déplacer. dans le dossier de démarrage .
Enfin, vous devrez passer le programme (et ses arguments) comme argument à RUNAS.
(N'oubliez pas de lancer le programme cible, ou n'importe quel programme, avec RUNAS, en spécifiant l'option / SAVECRED, au moins une fois sans l'exécuter minimisé afin de sauvegarder le mot de passe.)
La ligne de commande à utiliser peut devenir assez complexe car il s’agit d’un programme appelant un programme appelant un programme. Cela s'aggrave si vous devez spécifier des arguments pour le programme cible, et pire encore si vous devez inclure des espaces. La situation des guillemets peut rapidement devenir exaspérante, de sorte que de nombreuses expériences seront probablement nécessaires.
Par exemple, si vous utilisez ShelExec de PJ Naughter et souhaitez exécuter SpeedFan, vous utiliserez une ligne de commande comme celle-ci:
shelexec /showcmd:sw_hide /EXE runas "/params:/user:administrator /savecred ""C:\Program Files\SpeedFan\speedfan.exe"""
Je dois souligner que j’ai défini les options de SpeedFan pour un démarrage minimisé, sinon au lieu d’exécuter «directement» speedfan, je devrais exécuter un deuxième programme ShellExecute avec son option minimiser pour exécuter SpeedFan (un programme appelant un programme appelant un programme appelant un programme). Faire en sorte que cela fonctionne conduirait presque sûrement même le plus accompli des administrateurs informatiques à devenir fou furieux.
La ligne de commande peut être un peu fastidieuse, mais cela semble assez bien fonctionner pour toutes les tâches en arrière-plan à exécution automatique nécessitant un accès administrateur. Mieux encore, cela fonctionne pour les comptes d'utilisateur standard / limités. Vous pouvez donc utiliser cette méthode pour que les programmes s'exécutent automatiquement avec des privilèges élevés sans donner d'invitation UAC aux utilisateurs habituels.
(Bien que cela fonctionne bien, il a ses inconvénients, notamment parce qu’il exécute les programmes indirectement, les gestionnaires d’exécution automatique tels que Autoruns, StartupDelayer, HijackThis, etc. ne pourront pas détecter le programme en cours d’exécution automatique. fonctionne toujours et peut désactiver / supprimer / etc, mais ils n’afficheront pas les bonnes informations sur les ressources des icônes ou des fichiers.)