Приложение, запущенное из ASP.NET с использованием Process.Start, завершается ошибкой, если указаны учетные данные пользователя - PullRequest
4 голосов
/ 14 ноября 2011

Я не могу использовать Process.Start для запуска простого консольного приложения при указании учетных данных пользователя. Похоже, что вызов Process.Start пытается запустить приложение, но приложение сразу же завершается ошибкой с записью в журнале событий (см. Ниже). Я использую IIS 7.5 / .NET 4.0 на компьютере с Windows 7 Ultimate (x64). Пул приложений работает под ApplicationPoolIdentity и использует интегрированный режим. Веб-сайт настроен для работы в режиме полного доверия.

Для тестирования я создал простое консольное приложение ConsoleApplication1, которое просто записывает «Hello World» в консоль и добавляет текущую дату и время в текстовый файл, чтобы я мог видеть, что приложение выполнено. Когда я запускаю приложение нажатием кнопки в приложении ASP.NET, используя следующий код, я вижу, как новое значение записывается в мой текстовый файл, как и ожидалось.

protected void btnStart_Click(object sender, EventArgs e)
{
    Process.Start(@"C:\dump\test\ConsoleApplication1.exe");
}

Когда я пытаюсь указать набор учетных данных пользователя для запуска приложения с использованием приведенного ниже кода, в мой текстовый файл ничего не записывается, и я вижу сообщение в средстве просмотра событий, которое гласит:

Application popup: ConsoleApplication1.exe - Application Error : The application was unable to start correctly (0xc0000142). Click OK to close the application.

Вот код, вызывающий ошибку:

protected void btnStart_Click(object sender, EventArgs e)
{
    Process.Start(@"C:\dump\test\ConsoleApplication1.exe",
        "myusername", CreatePassword("mypassword"), string.Empty);
}

private static SecureString CreatePassword(IEnumerable<char> password)
{
    var ss = new SecureString();
    foreach (var c in password)
        ss.AppendChar(c);
    return ss;
}

Я почти уверен, что аутентификация учетных данных пользователя работает правильно, потому что я получаю ошибку Logon failure: unknown user name or bad password, если я ввожу неверную информацию.

Я чувствую, что, должно быть, упускаю что-то простое, но кто-нибудь может указать мне правильное направление здесь?

...