2008-12-03 14 views
1

Dans une application, j'ai besoin d'exécuter d'autres programmes avec les informations d'identification d'un autre utilisateur. Actuellement, j'utilise System.Diagnostics.Process.Start pour exécuter le programme:C#: Charger le profil itinérant et exécuter le programme en tant qu'utilisateur

public static Process Start(
    string fileName, 
    string arguments, 
    string userName, 
    SecureString password, 
    string domain 
) 

Cependant, cette fonction ne charge pas le profil itinérant du filet - ce qui est nécessaire.

Je pourrais utiliser "runas/profile ..." pour charger le profil et exécuter la commande, mais cela demanderait un mot de passe. Il doit y avoir une manière plus élégante ...

Mais où?

Répondre

5

Ma solution (basée sur l'indice de leppie):

 Process p = new Process(); 

     p.StartInfo.FileName = textFilename.Text; 
     p.StartInfo.Arguments = textArgument.Text; 
     p.StartInfo.UserName = textUsername.Text; 
     p.StartInfo.Domain = textDomain.Text; 
     p.StartInfo.Password = securePassword.SecureText; 

     p.StartInfo.LoadUserProfile = true; 
     p.StartInfo.UseShellExecute = false; 

     try { 
      p.Start(); 
     } catch (Win32Exception ex) { 
      MessageBox.Show("Error:\r\n" + ex.Message); 
     } 
+1

Nice, je pense que plus de gens devraient afficher leurs solutions finales :) – leppie