Я хотел бы запустить процесс из клиента интрасети на стороне службы 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).
Вопрос: Как я могу запустить процесс на стороне сервера из службы WCF, размещенной на IIS?
РЕДАКТИРОВАТЬ:
Я наткнулся на это сообщение с аналогичными проблемами, и я попробовал все там методы, включая все возможные варианты для Process.Start и P / Invoke с CreateProcessWithLogonW и CreateProcessAsUser. Я также попытался предоставить пользователям дополнительные разрешения. Ничего из этого не сработает с сообщениями об ошибках, идентичными тем, которые опубликовал этот парень.