2012-05-13 190 views
3

在工作中構建ASP.NET MVC3應用程序,並試圖使用必須通過命令提示符啓動並傳遞參數的程序。允許IIS運行cmd命令

目前我得到...

System.ComponentModel.Win32Exception (0x80004005): Access is denied 
at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo) 
at System.Diagnostics.Process.Start() 
at System.Diagnostics.Process.Start(ProcessStartInfo startInfo) 

這是隻需要在網站的一個部分,我不知道什麼是最好的處理辦法是,允許IIS(6)來完成此同時保持安全。

我不認爲這是相關的,但萬一這裏是我使用啓動一言以蔽之的Process()

try { 
    ProcessStartInfo startInfo = new ProcessStartInfo(); 
    startInfo.FileName = @"C:\pdftohtml\pdftohtml.exe"; 
    startInfo.Arguments = "-c " + NewsletterPath + @"\" + fileName + ".pdf"; 

    Process.Start(startInfo); 
} catch(Exception ex) { 
    return ex.ToString(); 
} 

問題的代碼:

什麼是最好的方式允許IIS6啓動一個需要在維護安全性時通過命令提示符傳遞參數的新進程?

+2

作爲一個方面說明:最好找到一個不會強迫你產生新進程的庫。你期望有多少個併發用戶? –

+0

此過程只能從內部用戶(或兩個)訪問。它只會每月使用一次(最多)。基本上我們有一個人把一個通訊放在一起,我厭倦了所有的轉換,所以我給她的網絡訪問,並告訴她如何去做...... :)基本上我很懶惰 – Jared

+0

我明白。但請注意,這種「懶惰」可能會導致服務器安全性的降低。任何以ASPNET身份運行的web worker現在都可以訪問該文件夾。 –

回答

5

將運行IIS(通常爲ASPNET)的用戶授予對目錄c:\pdftohtml\的修改權限,以解決該問題。

+0

你先生是我的英雄(目前)。我的頭撞在牆上! – Jared

+0

@Jared:這是如何完成的。我也面臨同樣的問題,所以如何添加此權限? – 2013-02-27 09:19:00

+0

@Shai:這是如何完成的。我也面臨同樣的問題,所以如何添加此權限? – 2013-02-27 09:19:44