2016-01-05 4 views
0

У меня есть веб-приложение, работающее под IIS на Azure VM. Он пытается выполнить приложение Windows32. Когда я запускаю приложение, я всегда получаю это исключение -> system.diagnostics.process.start доступ запрещен. Я попытался выполнить программу в командной оболочке командной строки, и она работает без необходимости запуска под управлением.System.Diagnostics.Process.Start Access Denied

Код -

string fileIn = us_post_directory + loan.loan_file; 
string fileOut = us_ocr_directory + loan.loan_file; 
string password = loan.password; 

var p = new System.Diagnostics.Process 
{ 
    StartInfo = 
    { 
     UseShellExecute = false, 
     FileName = "C:\\Program Files <x86>\\PlotSoft\\PDFill\\PDFill.exe", 
     //FileName = "E:\\PlotSoft\\PDFill\\PDFill.exe", 
     Arguments = 
      String.Format(" DECRYPT \"{0}\" \"{1}\" -password \"{2}\"", fileIn, fileOut, 
       password) 
    } 
}; 
p.Start(); 
+5

Веб-приложение, скорее всего, работает под учетной записью, которая не имеет доступа к выполнению этой программы. –

+0

Вы имели в виду использовать путь 'Program Files '? Не должно быть 'Progam Files (x86)' или 'System.Environment.GetEnvironmentVariable (« ProgramFiles (x86) »??? – Eris

ответ

2

Веб-приложения работают под контекстом IIS, который не имеет доступа ко многим из Windows, подсистем. Вам необходимо настроить IIS, в частности AppDomain для сайта, для запуска в качестве учетной записи службы, которую вы создаете и предоставляете разрешения. В зависимости от приложения учетной записи службы, вероятно, потребуется профиль пользователя и разрешение на доступ. Для выполнения некоторых из этих шагов необходимо использовать команду gpedit для настройки локальной политики или политики домена.

Точные шаги и необходимые разрешения будут зависеть от приложения, которое вы пытаетесь запустить, и от того, к чему он стремится.

+1

Решение заключалось в том, чтобы переместить исполняемый файл PDFill в каталог, к которому приложение могло получить доступ, без внесения изменений IIS. – Craig