2011-02-09 27 views
0

我可以在IIS上託管的ASP.NET網站上打開客戶端計算機上的可執行文件嗎?如何從ASP.NET網站打開.EXE文件?

我曾嘗試使用下面的代碼在ASP.NET嘗試:

Process notePad = new Process(); 

notePad.StartInfo.FileName = "notepad.exe"; 
notePad.StartInfo.Arguments = @"E:\abc.txt"; 

notePad.StartInfo.CreateNoWindow = false; 
notePad.StartInfo.UseShellExecute = false; 
notePad.StartInfo.RedirectStandardOutput = false; 

notePad.Start(); 

,並在Javascript與下面的代碼:

function Launch() { 
    var w = new ActiveXObject("WScript.Shell"); 
    w.run('notepad.exe'); 
    return true; 
} 

但這兩個片段將只打開該文件時,該網站不在IIS中託管。

任何幫助,非常感謝。先謝謝你。

+1

爲什麼你會想要這樣做?如果你認爲這是一個可以接受的選擇,那麼你的應用程序和對安全性的尊重就會嚴重破壞。 – 2011-02-09 04:41:53

+0

我同意科迪,你不應該這樣做。不過,我也明白,在許多環境中,用戶(主要是公司用戶)喜歡像他們這樣爲他們做的東西。如果有的話,您應該使用響應流傳輸文件數據,並允許操作系統(即Windows)將任何文件與正確的程序關聯起來處理它。 – bitxwise 2011-02-09 04:51:03

+0

其實這是根據要求,我已經給出。我想知道它是否真的可能(重寫安全問題)。還有一點,如果該可執行文件駐留在共享驅動器上,那麼是否有可能?我不認爲這是可能的。 – 2011-02-09 04:54:38

回答

2

能夠推出在客戶機上的可執行(計算機運行的瀏覽器)在幾乎任何情況下...

你的代碼是C#其中居住在服務器上看起來就像它試圖運行記事本,如果工作實際上是在服務器上打開記事本實例...不是客戶端。

如果您確實設法允許客戶端爲您提供運行記事本(一個大的if)的權限,那麼您可能還想顯示某些東西,如果該機器不是Windows PC(例如,沒有記事本第1名)

1

您可以嘗試使用Javascript,但這隻適用於IE用戶:

<html> 
<head runat="server"> 
    <title>Run Executable HTA</title> 

    <script language="javascript" type="text/javascript"> 
    function RunEXE(prog) 
    { 
     var oShell = new ActiveXObject("WScript.Shell"); 
     oShell.Run('"'+prog+'"', 1); 
    } 
    </script> 
</head> 
<body> 
    <input id="btnMyButton" onClick="RunEXE('notepad.exe')" type="button" value="Notepad" /> 
</body> 
</html> 

編輯

刪除硬編碼

編輯

更新應答如OP嘗試使用Design.exe。

正如我所說,我寧願不這樣做,但因爲這是一個要求,讓我們看看我們能做些什麼。假設Design.exe文件具有自己的文件擴展名(例如.txt,.des),而不是試圖打開Design.exe並傳遞它加載的文件,也許可以使用Response流傳輸文件,用戶打開下載,Windows(假設這是操作系統)將自動使用Design.exe來打開文件?

0

如果絕對必須做到這一點,我建議你不要......

選項1:
如果你只需要支持IE,一種選擇是建立一個小的ActiveX控件按鈕將彈出到所需的程序並將其嵌入到網頁中。

選項2:
如果你試圖打開一個特定的文件在任何design.exe是,和用戶有要打開登錄到該應用程序在其系統上,你可以只是把文件類型鏈接到具有適當的網頁擴展名的文件,它將打開包含該文件的應用程序。