Transformer un programme en cours en administrateur (Windows 7)

35

Parfois, vous pouvez ouvrir un programme que vous souhaitez exécuter en tant qu'administrateur, mais vous l'avez peut-être déjà ouvert non pas en tant qu'administrateur. Est-il possible d'élever les privilèges d'un programme déjà en cours d'exécution dans Windows 7 ou dois-je fermer et redémarrer en tant qu'administrateur?

Casebash
la source
8
sudo pour la victoire!
Josh K
1
@Josh K - er - Comment pouvez-vous élever une application déjà en cours d’utilisation en utilisant sudo?
Sathyajith Bhat
C'est magique, il faudrait décoder man sudopour plus d'informations.
Josh K
2
@Josh, si rien d'autre, vous pouvez toujours utiliser pseudo;)
Tomas Aschan

Réponses:

26

Malheureusement non. Un processus en cours d'exécution ne peut pas être élevé aux privilèges d'administrateur. Je cherche une source plus fiable, mais pour l'instant j'ai trouvé:

  1. "Les programmes ne peuvent pas être élevés une fois qu'ils ont déjà été lancés ..."

  2. "Le code ne peut être élevé au niveau du processus qu'au démarrage, ce qui signifie qu'un processus en cours d'exécution ne peut pas être élevé."

Stephen Jennings
la source
1
C'est absolument faux. L'API win32 prend en charge l'élévation d'applications arbitraires déjà en cours d'exécution, bien que l'application en question doive exposer la fonctionnalité elle-même. Cet article et le code source qui l'accompagne montrent comment procéder. Il est concevable que l'on puisse écrire une application pour sélectionner et élever d'autres processus ...
Fopedush
8
@Fopedush Bien que cet article décrive cette technique comme "auto-élévatrice", ces exemples de programmes semblent réellement lancer le lancement d'une nouvelle instance du processus en utilisant ShellExecuteExle verbe "runas". Je ne pense pas que cela répond au besoin du PO d’élever un programme déjà en cours (il perdra tout son état, par exemple).
Stephen Jennings
Lorsqu'une instance Total Commander 8.01 non montée est bloquée lors d'une opération telle que la copie dans un sous-dossier de fichiers programme, elle offre la possibilité de "réessayer en tant qu'administrateur". Cela ne peut-il pas être étendu aux processus "étrangers" (et non autonomes)?
n611x007
3
@naxa Je n'ai pas utilisé Total Commander, mais je suis prêt à parier que l'option "nouvelle tentative en tant qu'administrateur" génère en fait un processus élevé complètement séparé qui effectue le travail privilégié. Process Explorer fait cela lorsque vous choisissez "Afficher les détails pour tous les processus", il lance une nouvelle copie élevée de lui-même et ferme la copie non-égalisée. Si tel est le cas, les programmes doivent être spécifiquement écrits pour savoir comment lancer correctement le second processus.
Stephen Jennings
1
@StephenJennings Vous avez tout à fait raison. L'échantillon de code que j'ai lié ne fait en réalité que relancer avec la commande runas. J'aurais dû vérifier le code en plus de l'article avant de commenter. J'avais eu l'impression que l'API WIN32 exposait une sorte de mécanisme d'élévation - mais je me souviens peut-être mal. Je vais creuser et poster à nouveau si je peux trouver ce que je pensais.
Fopedush