2009-02-24 3 views
0

J'écris un outil de console. Sans privilèges d'élévation pour le support UAC (fichier manifest), appeler cet outil depuis l'invite de commande (cmd.exe) ou le gestionnaire de fichiers de la console (comme far.exe) l'ouvre dans la même fenêtre, écrit sa sortie dans la même fenêtrePrivilèges d'élévation pour l'UAC à l'aide de la nouvelle fenêtre de console ouverte manifeste

Mais maintenant, quand manifest file was added, une nouvelle fenêtre de console est créée pour l'outil après le dialogue de demande d'UAC, de sorte que la sortie de l'outil y est écrite et la fenêtre se ferme. Aucun but pour un tel outil étant la console.

Comment réparer cela? Quelles sont les solutions de contournement?

Répondre

2

Pour autant que je sache, il n'existe aucun moyen de "réparer" cela. Ce comportement est inhérent à la conception et vise à garantir que tout outil de ligne de commande que vous élevez n'est affecté par aucune modification de chemin dans la ligne de commande non élevée.

L'idée est que dans une journée de travail normale, les gens exécutent des programmes sur leurs machines. Ces programmes peuvent modifier le chemin de l'utilisateur, de sorte qu'un dossier contenant un programme malveillant nommé reg.exe est par exemple placé avant c: \ windows \ system32. Ensuite, l'utilisateur exécute un outil d'administration qui nécessite une élévation, l'outil appelle reg.exe sans spécifier le chemin et voila - vous êtes la propriété.

Vous devriez vraiment envisager d'obtenir la sortie de l'outil dans un fichier journal. Vous pouvez également développer l'outil en deux parties: un outil de console ne nécessitant pas d'élévation et un serveur COM hors processus nécessitant une élévation.

Questions connexes