2008-12-03 5 views
1

В приложении мне нужно выполнять другие программы с учетными данными другого пользователя. В настоящее время я использую System.Diagnostics.Process.Start для выполнения программы:C#: Загрузка перемещаемого профиля и выполнить программу как пользователь

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

Однако эта функция не загружает перемещаемый профиль из сети - которая требуется.

я мог бы использовать «Запуск от имени/профиль ...», чтобы загрузить профиль и выполнить команду, но спросит пароль. Там должно быть более элегантный способ ...

Но где?

ответ

5

Моего решения (основано на намеке 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

Ницца, я думаю, что больше людей должны размещать свои окончательные решения :) – leppie 2008-12-03 18:41:25