C#: загрузить перемещаемый профиль и запустить программу как пользователь
В приложении мне нужно выполнять другие программы с учетными данными другого пользователя. В настоящее время я использую System.Diagnostics.Process.Start для выполнения программы:
public static Process Start(
string fileName,
string arguments,
string userName,
SecureString password,
string domain
)
Однако эта функция не загружает профиль роуминга из сети - что требуется.
Я мог бы использовать "runas /profile ..." для загрузки профиля и выполнения команды, но для этого потребовался бы пароль. Должен быть более элегантный способ...
Но где?
2 ответа
Решение
Мое решение (основываясь на подсказке Леппи):
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);
}