Мне нужно запустить процесс как другой пользователь, и это бомбардировка.
Я уменьшил код до простого справочного примера.Этот код отлично работает, чтобы запустить сам процесс:
var info = new ProcessStartInfo("notepad.exe")
{
UseShellExecute = false,
RedirectStandardInput = true,
RedirectStandardError = true,
RedirectStandardOutput = true
};
Однако, если я добавлю значения UserName
и Password
:
var info = new ProcessStartInfo("notepad.exe")
{
UserName = "user",
Password = StringToSecureString("password"),
UseShellExecute = false,
RedirectStandardInput = true,
RedirectStandardError = true,
RedirectStandardOutput = true
};
Process.Start(info);
Это бомбы с очень полезнымSystem.ComponentModel.Win32Exception message:
Служба не может быть запущена, либо потому, что она отключена, либо из-за того, что с ней не связано ни одного подключенного устройства.
На всякий случайВот метод безопасного преобразования строк:
private static SecureString StringToSecureString(string s)
{
var secure = new SecureString();
foreach (var c in s.ToCharArray())
{
secure.AppendChar(c);
}
return secure;
}
Любые идеи или альтернативные решения будут очень благодарны!