2009-01-21 123 views
4

我們正在開發一個只能在Intranet上運行的站點,並且有權訪問此Intranet的計算機將安裝此可執行文件。我們不能有任何「你想打開[filename] .exe嗎?」提示。點擊一個鏈接,程序開始運行。從網站啓動可執行文件?

我意識到給網站在客戶端機器上運行可執行文件的能力是非常非常糟糕的,但是管理層拒絕對此加以改進。

機將會有Windows(XP或以上)使用Firefox 3

回答

10

我們正在開發一個只能在Intranet上運行的站點,並且有權訪問此Intranet的計算機將安裝此可執行文件。

這是否意味着EXE已經安裝在桌面上?你只是想從網站上啓動它?

如果是這樣,您可以將EXE與MIME Content Type關聯,當用戶點擊它時,它將啓動。

選擇一個內容類型和文件擴展名,爲你的EXE的名稱,例如:

 
CauseChaos.exe 
Associated with .chaos file extenstion 
Content Type will be: application/chaos 

助理通過EXE文件的擴展名與您的EXE安裝。我在這裏表現出來,用InnoSetup

[Registry] 
Root: HKCR; Subkey: .chaos; ValueType: string; ValueData: CauseChaos; Flags: uninsdeletekey 
Root: HKCR; Subkey: CauseChaos; ValueType: string; ValueData: CauseChaos Tool; Flags: uninsdeletekey 
Root: HKCR; Subkey: CauseChaos\DefaultIcon; ValueType: string; ValueData: {app}\CauseChaos.exe,0; Flags: uninsdeletekey 
Root: HKCR; Subkey: CauseChaos\shell\open\command; ValueType: string; ValueData: "{app}\CauseChaos.exe ""%1"""; Flags: uninsdeletekey

副MIME內容類型與文件擴展名,通過EXE安裝。

[Registry] (continued...) 
Root: HKCR; Subkey: HKCR\Mime\Database\Content Type\application/chaos; ValueType: string; ValueName: Extension; ValueData: .chaos; Flags: uninsdeletevalue
0

我可能想象這個工作的唯一方法是通過某種ActiveX控件這將運行可執行文件,但我不知道如何這與Firefox是可行的。

這應該是其中之一 - 你應該拒絕讓步,而不是管理層。

+0

這就像我的老闆說的:「我不付錢給你做,我付你錢讓我按照自己的方式行事」。 – Grant 2009-01-21 22:03:17

+0

@Grant:如果你的老闆堅持要你付出一些完全錯誤的東西 - 最終會讓他和公司陷入困境,而不是聽取知識淵博的開發者的意見,那麼你應該考慮在某個地方工作,意見更受重視。 – TheTXI 2009-01-22 01:29:51

-1

我甚至不知道這是否可能。如上所述,也許使用ActiveX控件,但是您將遇到瀏覽器支持和人員安全設置方面的問題。 更不用說劫持某人的PC的道德含義。

0

我建議你看看Adobe Flex/Air,它的設計考慮到了這個模型和它打開的固有安全穀倉門。

+0

鏈接是404.這就是爲什麼答案永遠不應該只是*鏈接。 – 2013-03-12 18:17:59

0

我同意其餘的,我敢肯定,你不能再這樣做了(特別是在Firefox中)。這就是當天有多少間諜軟件/廣告軟件安裝完畢。你將不得不採取立場,只告訴管理層它是不可能的。

0

一個活躍的X控件是最簡單的方法。有一個Firefox的插件,允許您託管活動的X控件。或者你可以寫一個NS插件來處理這個問題。

0

This是一篇關於可執行文件的web部署的舊文章。我知道這是可能的使用Internet Explorer(因爲我們分散的開發團隊,我們仍然需要支持這一點)。我不知道Firefox的含義。

1

嘗試這個JavaScript:

function executeCommands(inputparms) 
{ 
// Instantiate the Shell object and invoke its execute method. 

var oShell = new ActiveXObject("Shell.Application"); 

var commandtoRun = "c:\windows\Notepad.exe"; 

// Invoke the execute method. 
oShell.ShellExecute(commandtoRun, commandParms, "", "open", "1"); 
} 

您必須設置相應的瀏覽器安全設置,而這會工作只能在IE中。

0

使用 「文件:/// C:/ Program Files文件/ myprogs/MYPROG.EXE」 URL中使用的IE瀏覽器的鏈接。但是,我很久沒有試過這個了。

我會推薦上面的MIME類型方法或添加由該可執行文件處理的特殊URI前綴「chaos:// myparams」。

2

在那裏做過。 MIME類型(在我添加此時接受的答案)需要在客戶端和服務器上進行大量配置。這是相當多的工作,最終會產生臨時文件等。

我們的解決方案是添加我們自己的解決方案「自定義URL協議處理程序」。基本上,添加URL類型x-our-intranet並使您的公司應用程序成爲它的URL處理程序。現在,任何鏈接都會啓動您的公司應用程序,並將「x-our-intrenet:foo」作爲命令行參數傳遞。它只需要一個客戶端註冊表項,類似於MIME類型。

0

我完全理解你想要什麼。我在互聯網上讀到的所有人都提到這是一個很大的安全漏洞等......但是,我不認爲他們明白你爲什麼要實現這一點,我將解釋爲什麼我需要這個,並正在解決這個問題,我正在接近。

我有許多不同的用戶應用程序,例如。呼叫中心等... 我目前正在使用Kiosk模式運行的鎖定桌面。所有用戶都會看到一個帶有一些計算機信息和一個IE圖標的藍屏。我的目標是從此頁面運行Microsoft Office和一些內部的客戶端/服務器應用程序。它工作得很好,因爲一切都還在,只是我的用戶看不到它。但是,我遇到了和你一樣的問題。我的網絡使用MPLS,內部和外部託管路由器,防火牆/ ASA和大量安全專業人員非常安全。另外,這僅限於INTERNAL。所以,在我看來它非常好。所以,如果我想出一些解決方法,我會發布它。

相關問題