Как запустить процесс из службы WCF, размещенной в IIS?

Я хотел бы запустить процесс из клиента интрасети на стороне службы 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. Я также попытался предоставить пользователям дополнительные разрешения. Ничего из этого не сработает с сообщениями об ошибках, идентичными тем, которые опубликовал этот парень.

9
задан oleksii 28 August 2011 в 11:40
поделиться