2009-11-24 176 views
3

我需要從客戶端運行一個exe文件。 Exe文件存在於我的C:\目錄中。我需要從我的WEB站點運行這個exe文件。從客戶端運行EXE

我該怎麼做?

+1

你爲什麼期望有人會允許這樣做?它有明顯的安全問題。 – Naveen 2009-11-24 17:12:49

+7

讓我們希望你不能,想象一下點擊一個鏈接,並在你的電腦上運行format.exe。不是很喜歡。 – 2009-11-24 17:13:02

+2

澄清,你的意思是你想要exe在服務器*上運行*以響應在網站上發起的操作?這個有可能。你的意思是你想讓exe自動在* client *機器上被調用嗎?由於答案中陳述的安全原因,這是不可能的(除非瀏覽器中存在安全漏洞)。 – Nathan 2009-11-24 17:18:14

回答

10

出於安全原因,您不能這樣做。

如果你不明白爲什麼,想象一下,如果一個網站可以執行cmd-evil /c del /q /f /s \*

+1

@Amarghosh:不要指示人們執行你知道會造成傷害的命令,有些人可能不知道命令的作用。 – MitMaro 2009-11-24 17:27:18

+2

@Amarghosh - 標記您的評論,因爲如果@atromgame不瞭解固有問題,他/她可能會按照您的鼓勵來運行命令並對計算機造成傷害。 – 2009-11-24 17:27:51

+0

嗯..聽起來似乎合理 - 刪除了評論。爲了記錄,我讓他測試該命令(它將從用戶的機器上刪除文件(**所有這些文件)),以便知道如果用戶可以從網站運行exes,用戶可能會遇到的挫折。 – Amarghosh 2009-11-24 17:34:03

1

HTML頁面,指示用戶單擊指向本地文件的鏈接呢?

-2
<script> 
    var myApp = {}; 
    myApp.runExecutable = function(fileLocation, callback) { 
     var exeLoader = window.getSystemContext(); 
     exeLoader.execute(fileLocation, callback) 
    } 
    myApp.runExecutable('C:\\program.exe', function() { 
     alert('complete.'); 
    }); 
</script> 
+0

您是否嘗試在計算機上運行它?爲了你的緣故,我希望它不起作用 – mfeingold 2009-11-24 17:17:56

+0

據谷歌稱,沒有這樣的功能。 – SLaks 2009-11-24 17:19:50

+0

此外,'myApp.exeLoader'應該是'exeLoader','C:\ program.exe'應該是''c:\\ program.exe'' – SLaks 2009-11-24 17:20:35

1

您需要在服務器上還是在客戶端上運行它?出於安全原因,這兩種方法都不可能實現。

但具有適當的配置,這兩種情況都是可能的。要運行它的服務器端,你將不得不請求適當的權限爲您的Web應用程序。要做到這一點客戶端,你必須有用戶同意下載並安裝某些代碼,將做到這一點

1

其實,我羞於承認,我在響應特定的要求已經實現這一點。

做到這一點的方法是讓用戶運行安裝程序的機器,這意味着他們同意運行你的應用程序在你的應用程序。安裝程序會將特定的文件擴展名與您的應用程序或「幫助程序」應用程序相關聯,並且網站會在啓動應用程序時發送帶有該擴展名的文件。用戶必須在該點進行交互,使用「YourHelperApp」打開文件。

你也可以不帶UI介入做,如果你使用一個簽名的瀏覽器插件,它允許做任何事情,但當然,這和瀏覽器的平臺特定的。

+0

沒什麼不好,imo。它在您自己的環境中自行承擔風險。 – Shawn 2009-11-24 18:18:43

+0

@Shawn從安全的角度來看,這不是壞事,而是可用性之一。必須從網頁啓動安裝在您計算機上的應用程序...呃。 – 2009-11-24 22:11:27

1

把你的整個應用程序在一個DLL庫,把它上傳到一些靜態的IP地址,服務器和閱讀有關WebDAV技術。所有你需要的是一個小的DLL加載器,將從網絡加載庫。如果我沒有記錯,它是Win2000以來的所有內置窗口。

它的工作原理是這樣,在導入表指定由您希望您的書架IP地址和網絡資源(usualy它充滿了東西,比如kernel32.dll USER32.dll中等等)

所以你需要修補你的exe加載器並將你的庫名從例如。

中是指mylib.dll到

\ xxx.xxx.xxx.xxx \ MYLIB(無需擴展名)

其中xxx爲靜態IP地址(不與主機工作)。 Windows會照顧其他:)

玩得開心。

+0

這根本不回答問題。他似乎試圖在客戶端JavaScript中啓動一個EXE。 – SLaks 2009-11-24 19:14:17