Question

J'ai utilisé le fichier manifeste d'application comme décrit ici d'avoir une partie de ma demande en cours d'exécution avec des privilèges élevés (dont il a besoin).
Ainsi, en cas de besoin, le programme principal invoque juste un petit ensemble à l'aide Process.Start qui gère alors la tâche pour laquelle des droits d'administrateur sont nécessaires.

Cependant, comment puis-je faire la même chose sous Windows XP?
Il semble XP ignore tout ce manifeste et court le petit assemblage dans le contexte de l'utilisateur actuel.

Était-ce utile?

La solution

Le code suivant ici ne exactement ce que je besoin:

ProcessStartInfo processStartInfo = new ProcessStartInfo("path", "args");
processStartInfo.Verb = "runas";

using (Process process = new Process())
{
   process.StartInfo = processStartInfo;
   process.Start();
   process.WaitForExit();
}

Donc, en fait, vous devez définir « runas » sur ProcessStartInfo.Verb. Avec le code manifeste ci-joint fonctionne maintenant très bien sur Windows XP, Vista et 7.

Mise à jour: Voir aussi cette réponse à une question similaire . Ceci est essentiellement le même code, tout en utilisant des arguments aussi bien.

Autres conseils

Vous pouvez utiliser la runas commande.

Windows XP ne pas UAC.

Vous devez appeler Process.Start avec les informations de connexion d'un utilisateur avec priviliges d'administration.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top