Process.Start -> Access is denied

Signaler
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
-
Messages postés
1
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
15 septembre 2009
-
Salut,
Après de nombreuses heures passés sur google à chercher je viens ici comme dernier recourt.
Lorsque j'essais de démarrer un process à partir d'un service windows j'obtient au moment de l'execution de Process.Start le message "Access Is Denied".



ProcessStartInfo
psi =

new



ProcessStartInfo
(_ImageFilePath);




psi.UserName = "utilisateurX";
psi.Domain =

"domaineY"
;
psi.Password = "mdpZ";
psi.CreateNoWindow =

true
;
psi.UseShellExecute =

false
;




Process
.Start(psi);

Si je ne définis pas de nom d'utilisateur/mdp/domaine le process est bien executé.
Avez-vous une idée pour exécuter un process sous un autre utilisateur à partir d'un service windows ?

Merci d'avance.

7 réponses

Messages postés
18
Date d'inscription
mardi 20 septembre 2005
Statut
Membre
Dernière intervention
3 mars 2009

Salut Willi,

    je crois qu'il faut utiliser un SecureString pour le mot de passe....

je pense que c'est pour çà que ne fonctionne pas...

cf : http://www.csharpfr.com/codes/LANCEUR-PROGRAMME_38787.aspx

A+
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
20
Lol je sais bien que Password est de type SecureString le problème n'est pas là malheuresement cela aurait été trop simple.
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
je pense que tu as déjà vérifié mais bon :

1. Est-ce que l'utilisateur X du domaine Y a les droits d'exécution sur le programme ?
2. Si tu fais un runas /user:Y\X programme.exe, est-ce que ca marche ?

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
20
Avec le même code dans une appli X console ou windows form le process s'execute bien avec le compte spécifié.
L'astuce serait peut etre d'executer cette appli X sous le meme compte que le service (LocalSystem).
Arf c'est du soucis. Merci à vous.
Messages postés
25
Date d'inscription
samedi 11 mars 2006
Statut
Membre
Dernière intervention
10 septembre 2007

Je pense voir le même problème que toi et j'ai regarder le code "lanceur de programme" masi je n'arive pas à convertir une String en SecureString pour passer le mot de passe dans les paramètres de StartInfos...
Messages postés
1
Date d'inscription
samedi 22 mai 2004
Statut
Membre
Dernière intervention
5 février 2009

pour le mot de passe voila comment procédé:

tu crée un securestring ici je le nome PasswordCedre et tu dois utiliser  foreach car le securestring code la string caractére par caractére.

aprés il te suffit de spécifié la valeur des champs

ici j'ai déclaré myPassword pour l'exemple tu peut le récupérer depuis une texbox

System.Security.

SecureString PasswordCripté =
new System.Security.
SecureString();
ProcessStartInfo MyIexplore =
new
ProcessStartInfo(
@"C:\Program Files\Internet Explorer\iexplore.exe");

string myPassword = "essai";

foreach(
char myChar
in myPassword )
{
      PasswordCripté .AppendChar(myChar);
}
MyIexplore.Arguments =

@"http://www.google.fr/";
MyIexplore.UserName = "toto";

MyIexplore.Password = PasswordCripté;

MyIexplore.UseShellExecute =
false;

Process.Start(MyIexplore);

ne lache rien la tenacité sera récompensé !! JSOFT ;))
Messages postés
1
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
15 septembre 2009

Bonjour,

J'ai le même problème que toi Willi !

J'ai un service ( system !) qui doit redémarrer un programme en tant que simple User mais j'ai access denied...

J'ai le même code que toi avec le user et pssword etc...
Alors que un mode windows cela fonctionne très bien !

As-tu trouvé une solution ?

Merci