2015-01-30 2 views
0

Envrionment: .Net 2.0, Windows 2003, 64-разрядныеНевозможно запустить cmd.exe с помощью system.diagnostics

Я пытаюсь перенести сайт от старого сервера на новый сервер, а ниже код не работает больше после перемещение кодов:

System.Diagnostics.ProcessStartInfo psi = new 
    System.Diagnostics.ProcessStartInfo("cmd.exe"); 
    psi.UseShellExecute = false; 
    psi.RedirectStandardOutput = true; 
    psi.RedirectStandardInput = true; 
    psi.RedirectStandardError = true; 
    // Start the process 
    System.Diagnostics.Process proc = System.Diagnostics.Process.Start(psi); 
    System.IO.StreamReader strm = proc.StandardError; 
    System.IO.StreamReader sOut = proc.StandardOutput; 

    // Attach the in for writing 
    System.IO.StreamWriter sIn = proc.StandardInput; 

    sIn.WriteLine(exec); 

    strm.Close(); 
    sIn.WriteLine("EXIT"); 

    proc.Close(); 

    // Read the sOut to a string. 
    string results = sOut.ReadToEnd().Trim(); 

    // Close the io Streams; 
    sIn.Close(); 
    sOut.Close(); 

Похоже, что система не позволяет запустить ни один из .exe. Код работал правильно на предыдущем сервере, поэтому я предполагаю, что это некоторые проблемы с конфигурацией системы. Я нашел аналогичную проблему здесь: Foo.cmd won't output lines in process (on website)

но я не понял часть «создайте нового пользователя с привилегиями для выполнения пакетных скриптов и выберите этого пользователя в качестве пользователя AppPool в IIS». Я знаю, как создать нового пользователя , но не смог определить способ предоставления пользователю права на выполнение .exe или пакетных файлов.

Любой совет будет полезен.

Спасибо,

+0

Какое сообщение об ошибке вы видите? – jrummell

+0

Я не вижу сообщений об ошибках. Просто ничего не происходит –

ответ

0

Это может быть уровень доверия .NET на новом сервере. Попробуйте настроить уровень доверия в диспетчере IIS на «Полный» для этого приложения.

+0

Он уже настроен как Полный (внутренний). –

+0

Просто настройте учетную запись пользователя. Например, на моей машине Dev у меня есть локальный пользователь с именем websvr, который имеет полные права на орехи в папке моих веб-сайтов. Затем я установил, что мой пул приложений использует учетную запись websvr, а не пользователь по умолчанию, который устанавливает мс с помощью iis. –

+0

Для целей тестирования я использовал учетную запись администратора для пула приложений. Поскольку учетная запись администратора имеет все разрешения, я думал, что она должна работать, но не удалась. Любые другие идеи, которые я могу пропустить? Ниже приведена дополнительная информация о настройке пула приложений: Идентификатор модели процесса = администратор, версия = 2.0, Режим управляемого канала: классический –