iT邦幫忙

0

網頁執行 BAT檔

各位大大好
小弟!最近想架設個網站 希望能實現USER端 點擊連結就可以直接執行本機上的bat檔 而不是下載可不知道要從哪下手 聽說vbs好像能做到 但小弟找不到範本 不知道有沒有大大能指指路 謝謝~~~~~~

dragonH iT邦超人 5 級 ‧ 2019-07-01 18:54:20 檢舉
雖然我是覺得不可行啦

至少也要 front end -> back end -> bat

這樣

不過微軟的總是有特例 XD

這我爬到你可以參考

https://ppt.cc/frVXpx

不過看起來只限server本機的bat
ccutmis iT邦高手 8 級 ‧ 2019-07-02 02:56:37 檢舉
一般網頁直接執行本地端bat 那不就跟駭客行為一樣了...
架站要作到這個應該是很難,
除非架站是指在user的電腦架設(例如灌xampp)
然後用php的exec()函數呼叫bat檔
以下是範例
https://stackoverflow.com/questions/21526577/running-bat-script-from-php-web-page
https://www.php.net/manual/en/function.exec.php
3
浩瀚星空
iT邦超人 1 級 ‧ 2019-07-02 10:39:00
最佳解答

不確定你的後端語言是哪一種。可以利用後端語言的本地端運行語法,來達到運行server的應用程式處理。如php的exec等等應用語法。

但要小心並符合以下的情況
1.所運行的應用程式,需要可以給web user連行的權限。這需要額外給定。
2.需要小心這樣的運行方式並非是多工運行。所以有機會會有鎖檔的可能性。

不過你有說到了vba。我擔心你想要的並不是運行server的應用。而是想運行客戶端的應用。
基於本機安全性原則,不容許任何網頁語言或語法可不經同意的情況下做運行及操作的動作。
這是不可能的事。
一般需要的是另設計瀏覽器插件給客戶端安裝。一但安裝也就代表了同意使用並操作。
或是採用acx的設計。早期原本還可以利用flash處理。現在已經不行了。

看更多先前的回應...收起先前的回應...
ccutmis iT邦高手 8 級 ‧ 2019-07-02 10:47:58 檢舉

我在想說會不會是樓主其實是想作一個用戶介面給end user用,例如他是一個mis,底下有n個end users',他寫了一些*.bat檔想要放在end users'電腦給end user自己點擊執行,最簡單的想法就是寫個網頁裡面帶連結到硬碟裡的bat檔路徑(但是網頁執行bat會因為安全性問題被擋),如果是這樣子的需求,或許可以用HTML應用程式(.HTA)來作?
https://zh.wikipedia.org/wiki/HTML%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F

froce iT邦大師 1 級 ‧ 2019-07-02 10:56:46 檢舉

我也覺得他不是要在server端執行bat,而是要client下載bat後執行bat。

這會有很可怕的安全問題...

ccutmis iT邦高手 8 級 ‧ 2019-07-02 11:03:19 檢舉

"要client下載bat後執行bat"...
不是吧... /images/emoticon/emoticon21.gif

其實這種事早前我的網頁也曾經幹過這事了。
但那要將網址加入信任後才可以這樣處理。很多客人連怎麼加信任也不會。會變成這個功能只是單純的下載。後續教不會信任的客人。就換教他們直接去執行該bat。

但時間久了也太麻煩了,再加上會讓客戶產生該網址的不信任感。(有的防毒會報不安全性網站)

所以在後期我就不在用這樣的笨方式了。
我後期是將bat的東西封包成exe檔。再讓客戶去下載回來使用。
不在網頁上做自動觸發了。

jian_wei iT邦新手 5 級 ‧ 2019-07-02 17:51:35 檢舉

ccutmis對 我確實是個MIS 我是想要自己架個網站 可以讓USER 連上去 找尋自己要裝印表機的批次檔 點一下 就在本地端執行批次檔 還是說只能讓USER 自己下載自己執行

jian_wei iT邦新手 5 級 ‧ 2019-07-02 17:51:36 檢舉

ccutmis對 我確實是個MIS 我是想要自己架個網站 可以讓USER 連上去 找尋自己要裝印表機的批次檔 點一下 就在本地端執行批次檔 還是說只能讓USER 自己下載自己執行

jian_wei iT邦新手 5 級 ‧ 2019-07-02 17:53:53 檢舉

浩瀚星空謝謝回答 可以請問一下 加入信任有辦法寫成 類似批次檔的東西嗎或是其他的 就是讓USER 點兩下就可以加進去的方法

加入信任的動作,也是得要利用 ActiveX 來處理的。
但一但手動加入信任之後。也就不需要再點「加入信任」這個動作了。
很矛盾的做法。但也很安全的做法。
不過你的要求是做不到的。

其實你只要記好一個原則就好了。一般只要是需要動到或是修改到本機的任何的設定或是參數。都不可能能達到所謂的「無知覺」動作。一但都要經過一個手動的手續才行。這就是本機安全性的原則。
不要認為這是一件很麻煩的事。
因為一但有可以在「無知覺」的情況下,網頁程式可以去動你電腦內部的東西。是不是一件很可怕的事呢??

一般你其實可以發現一件事,就是無論任何一家銀行,都一定會要求除了驅動之外的元件安裝。無論是java的物件或是acx等等東西。
都是為了取得用戶本機的東西跟修改及改變處理用的。

也就是說,你如果真的所要做到這些自動化的控制動作,就只有學他們一樣了。額外做個物件或是網頁插件。來當第三方資料傳送的容器處理。
要不然所單純要用網頁語言直接做到完全無感修正設定就目前而言是還做不到的事。

講坦白點,我個人在使用瀏覽器,都是設定在 ActiveX 不運行的安全模式下。一但有需要使用 ActiveX 處理的網頁。我一律不會在進來。
我也建議你還是分兩段處理跟說明會比較好。

1
ccutmis
iT邦高手 8 級 ‧ 2019-07-02 11:24:34

不知道這是不是樓主要的,在看過浩瀚星空網友提供的意見後,我想到一個東西跟樓主提的有些相像,我的思路是這樣的,
假設在user的電腦名稱為"demo",在他的桌面建一個資料夾名"testDir",然後在testDir資料夾裡新建一個檔案叫作"testDir.bat"。
testDir.bat內容為:

dir *.* > testDir.txt

接著在testDir資料夾(或任何你想建立的位置)新建一個檔案叫作"testRunBat.hta"
testRunBat.hta內容:

<HTA:Application ID="read_mail" Applicationname="run_bat_app" scroll="yes" icon="" singleinstance="yes">
<html><head><meta charset="utf-8">
<script language="VBScript">
Function PopulateTable()
	Set shell = CreateObject("WScript.Shell")
	shell.CurrentDirectory = "C:\Users\demo\Desktop\testDir"
	shell.Run "testDir.bat"
End Function
</script></head>
<body>
<button onclick="Call PopulateTable()">RUN BAT</button>
</body></html>

以滑鼠雙擊"testRunBat.hta"就會看到網頁開啟起來,
接著點一下[RUN BAT]按鈕就會執行 testDir.bat
(因為它會在背景執行,你可以發現按下按鈕後,畫面沒有變化,要到testDir資料夾裡看看是否有多了一個testDir.txt文件 這個是testDir.bat執行的結果)

經我測試過是ok的,不會被防毒防火牆權限攔住,基本功能的如果能行,剩下的就看你怎麼把bat檔內容改成你要做的東西了,
而這整個思路並沒有所謂架站的動作,它只是用hta技術把html包裝成一個可以在本地端執行的ui介面,所以整個demo就只有你執行的ui介面(testRunBat.hta)跟要執行的bat檔(testDir.bat)...

如果這個方向不是樓主你要的,那你可能要往駭客領域去想了,
因為就我的認知正常瀏覽的網頁點擊是絕對不可能執行本地端bat檔的
(bat檔可以做到讓你的系統崩潰或是直接把你的硬碟清空...還有其它可怕的東西,
只要你不確定bat的內容,從網路上下載到本地端的bat都不能直接執行的,
在這種原則下自然網頁瀏覽對bat的設限很多,
一般比較有名的防毒軟體也不會讓你的網頁能點連結就執行bat) ,
能做到的就是類駭客的行為了吧...
/images/emoticon/emoticon82.gif

(HTA)HTML應用程式的wiki說明:
https://zh.wikipedia.org/wiki/HTML%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F

只能在IE11之前版本實作吧?遇上其他作業系統和瀏覽器就GG了

ccutmis iT邦高手 8 級 ‧ 2019-07-02 17:48:51 檢舉

樓主有提到bat跟vbs,判斷應該是使用windows作業系統。

hta是用到ie的核心原件而不是直接執行ie,
(根據我的測試是在灌不同版本ie的windows上跑,vbs版本有些許差異而已,例如在ie?版之前是5.6版,之後的是5.7版)
所以基本上是不用管OS裡面的ie是第幾版的
(平常瀏覽網頁我都用chrome^^"也沒多少人在用ie了吧)
作業系統是綁微軟的Windows沒錯,因為VBS本身就是微軟開發出來。

1
跑得快
iT邦新手 3 級 ‧ 2019-07-03 17:44:20

如果User端都在內網,開放一個共用資料夾裡面放對應印表機driver與bat檔讓user自行選取安裝如何呢?

我要發表回答

立即登入回答