Executer un process, sous un nom d'utilisateur spécifique, par un service window

cs_Rastafman Messages postés 8 Date d'inscription vendredi 27 octobre 2000 Statut Membre Dernière intervention 19 juin 2008 - 12 juin 2008 à 11:00
cs_Rastafman Messages postés 8 Date d'inscription vendredi 27 octobre 2000 Statut Membre Dernière intervention 19 juin 2008 - 12 juin 2008 à 12:23
Bonjour à tous,


Voilà je me retrouve face à un problème assez étrange.


J'ai créé un service Windows qui doit lancer un process sous un utilisateur spécifique.


Problème, ça bloque sur le process.start().


Lorsque j'execute le code dans une Windows form alors pas de problème
le process est lancé sous le nom de l'utilisateur spécifié.


Alors la question que je me pose, c'est : Est-il possible de lancer un
process à partir d'un service en spécifiant le nom d'utilisateur à
utiliser ?


Voici mon code

privatevoid ExecutFile(string FileName, string Parameters, string PathName, bool bNeedWait)
{
Process p = new Process();

AddToFile(FileName);
p.StartInfo.FileName = FileName;
 
p.StartInfo.WorkingDirectory = PathName;
p.StartInfo.UserName = "uid";
p.StartInfo.LoadUserProfile = true;
 
System.Security.SecureString ss = new System.Security.SecureString();
string s = "pwd";
foreach(char c in s)
{
ss.AppendChar(c);
}
p.StartInfo.Password = ss;
p.StartInfo.Domain = "dmn";
p.StartInfo.RedirectStandardError = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardInput = true;
 
p.StartInfo.CreateNoWindow = true;
p.StartInfo.UseShellExecute = false;
p.Start();
 
if(bNeedWait == true)
{
p.WaitForExit();
}
}
 

Merci, pour votre aide,

Cordialement,

Stéphane

1 réponse

cs_Rastafman Messages postés 8 Date d'inscription vendredi 27 octobre 2000 Statut Membre Dernière intervention 19 juin 2008
12 juin 2008 à 12:23
Je me repond à moi même,

Le service est démarré en tant que localsystem, compte qui n'a pas le droit de lancer des process sous un autre nom d'utilisateur...

Je démarre donc le service avec l'utilisateur avec lequel je veux ouvrir le process.

Dans la classe d'installation (si username et password sont à null alors ils seront demandés à l'installation) :
            this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.User;
            this.serviceProcessInstaller1.Username = null;
            this.serviceProcessInstaller1.Password = null;
0
Rejoignez-nous