UAC et Process.Start

scoubidou944 Messages postés 719 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 19 janvier 2017 - 13 sept. 2008 à 02:34
cs_kazuhiko Messages postés 3 Date d'inscription jeudi 15 septembre 2005 Statut Membre Dernière intervention 3 mars 2009 - 3 mars 2009 à 21:58
bonsoir,

j'ai une petite application qui tourne dans le system tray avec des droits normaux.
Or elle doit lancer l'autre appli qui elle demande l'élévation de privilèges.
Cette 2eme appli a bien son fichier de manifest modifié vu que lancé à partir de l'explorer, l'UAC pop.

Maintenant, si je le lance comme ceci, il me dit "L'opération demandée nécessite une élévation".

Process MyProc = new Process();
MyProc.StartInfo.WorkingDirectory = directory;
MyProc.StartInfo.FileName = Path.Combine (directory, appname);
MyProc.StartInfo.UseShellExecute = false;
MyProc.StartInfo.RedirectStandardError = true;
MyProc.StartInfo.RedirectStandardInput = true;
MyProc.StartInfo.RedirectStandardOutput = true;
MyProc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
MyProc.StartInfo.Arguments = arguments;

try
{
MyProc.Start();
MyProc.Close();
}

Merci,
++
Vince
----------------------------
C++ forever
C# amateur
A voir également:

3 réponses

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
15 sept. 2008 à 11:52
il faut que tu utilises la command runas

Sébastien FERRAND (blog)
Consultant Sénior
[Microsoft Visual C# MVP]
0
scoubidou944 Messages postés 719 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 19 janvier 2017
17 sept. 2008 à 19:32
heu, mais encore ?
0
cs_kazuhiko Messages postés 3 Date d'inscription jeudi 15 septembre 2005 Statut Membre Dernière intervention 3 mars 2009
3 mars 2009 à 21:58
Bonsoir,

J'ai eu le même problème et la solution suivante a fonctionné.
Démarrer le process en passant par le shell, remplace donc:

MyProc.StartInfo
.UseShellExecute = false


;




par:
 
MyProc.StartInfo
.UseShellExecute =




true



;

Pour l'élévation il faut ajouter la ligne suivante qui sur Vista appellera le UAC (sur XP ca appellera le dialogue RunAs.



MyProc.StartInfo.Verb =




"runas"


;








Kazuhiko
0
Rejoignez-nous