Я хотел бы запустить процесс из клиента интрасети на стороне службы WCF. В моем случае клиент просит сервер создать новый процесс на компьютере сервера с предоставленными учетными данными. Служба WCF размещена на IIS 7.5, и я запускаю процесс, используя этот код
var processInfo = new ProcessStartInfo("C:\\Windows\\System32\\notepad.exe")
{
UserName = "some user",
Password = MakeSecureString("some password"),
UseShellExecute = false,
LoadUserProfile = true
};
Process process = Process.Start(processInfo);
Этот код работает, если я размещаю службу WCF как самостоятельное консольное приложение, работающее под учетной записью администратора, и вижу, что блокнот запущен под другим пользователем. Сбой на IIS без исключения, но процесс немедленно прекращается
process.HasExited = true;
process.ExitCode = -1073741502;
В IIS приложение WCF выполняется под пользователем с правами администратора и имеет полное доверие, определенное в web.config. Я не могу использовать само размещенное приложение, поскольку оно не поддерживает простую непрерывную доставку (например, WebDeploy с веб-фермами IIS).
Q: Как запустить процесс на стороне сервера из службы WCF, размещенной на IIS?
EDIT:
Я наткнулся на эту запись , с похожими проблемами, и я попробовал все методы там, включая все возможные варианты для Process.Start и P / Invoke с CreateProcessWithLogonW и CreateProcessAsUser. Я также попытался предоставить дополнительные разрешения пользователям. Ни один из них не будет работать с сообщениями об ошибках, идентичными сообщениям, опубликованным парнем.