C #: загрузить перемещаемый профиль и запустить программу как пользователь - PullRequest
1 голос
/ 03 декабря 2008

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

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

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

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

Но где?

Ответы [ 2 ]

6 голосов
/ 03 декабря 2008

Мое решение (основываясь на подсказке Леппи):

        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);
        }
5 голосов
/ 03 декабря 2008
...