srvany.exe介紹srvany.exe是Microsoft Windows Resource Kits工具集的一個(gè)實(shí)用的小工具,用于將任何EXE程序作為Windows服務(wù)運(yùn)行。也就是說(shuō)srvany只是其注冊(cè)程序的服務(wù)外殼,這個(gè)特性對(duì)于我們來(lái)說(shuō)非常實(shí)用,我們可以通過(guò)它讓我們的程序以SYSTEM賬戶(hù)啟動(dòng),或者實(shí)現(xiàn)隨機(jī)器啟動(dòng)而自啟動(dòng),也可以隱藏不必要的窗口,比如說(shuō)控制臺(tái)窗口等等。 資源下載你可以通過(guò)下載并安裝Microsoft Windows Resource Kits 獲得或者直接在本文下載。 示例中的控制臺(tái)程序僅僅是向當(dāng)前路徑不停的寫(xiě)入時(shí)間。 srvany 打包下載地址 測(cè)試程序,測(cè)試程序(含控制臺(tái)項(xiàng)目)
軟件名稱(chēng):instsrv.exe srvany.exe 打包(可將程序安裝成windows服務(wù))軟件大小:49KB更新時(shí)間:2013-09-24立即下載
如何使用 當(dāng)你獲取到srvany后并決定將某程序作為服務(wù)啟動(dòng)后,請(qǐng)先將srvany安裝為系統(tǒng)服務(wù),具體的安裝方法有很多,這里使用instsrv,語(yǔ)法如下:
安裝 instsrv ServiceName C:\Windows\System32\srvany.exe 卸載 instsrv ServiceName remove 或者 sc delete servername
腳本之家補(bǔ)充:如果服務(wù)名中間有空格需要用雙引號(hào)例如 sc delete "server name"
(ServiceName 即你自己定義的服務(wù)名稱(chēng),可以是要作為系統(tǒng)服務(wù)啟動(dòng)的應(yīng)用程序的名稱(chēng)。) 安裝完畢后,我們需要對(duì)srvany.exe進(jìn)行配置,以便于能夠加載我們指定的程序,配置的方法是,開(kāi)始 - 運(yùn)行 - regedit,打開(kāi)注冊(cè)表,定位到下面的路徑。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ServiceName 如果該服務(wù)名下沒(méi)有Parameters項(xiàng)目,則對(duì)服務(wù)名稱(chēng)項(xiàng)目右擊新建項(xiàng),名稱(chēng)為Parameters,然后定位到Parameters項(xiàng),新建以下幾個(gè)字符串值。 名稱(chēng) Application 值為你要作為服務(wù)運(yùn)行的程序地址。 名稱(chēng) AppDirectory 值為你要作為服務(wù)運(yùn)行的程序所在文件夾路徑。 名稱(chēng) AppParameters 值為你要作為服務(wù)運(yùn)行的程序啟動(dòng)所需要的參數(shù)。 比如這里是個(gè)配置實(shí)例,我們這里配置的服務(wù)名稱(chēng)是MyService,下面是MyService的安裝配置情況: 至此,MyService已經(jīng)安裝成windows服務(wù)了,在Window服務(wù)項(xiàng)中即可查看。
本文當(dāng)然不會(huì)僅僅是照搬文章,最近在學(xué)習(xí)批處理,將其中的操作使用批處理來(lái)完成。
批處理說(shuō)明
1. run-install.bat 封裝了安裝服務(wù)的操作(上面有提到)。需要傳入?yún)?shù)有服務(wù)名稱(chēng),程序名稱(chēng)。
@echo offrem 參數(shù)依次為 服務(wù)名稱(chēng) 可執(zhí)行文件名稱(chēng)@echo 服務(wù)名稱(chēng):%1@echo 程序名稱(chēng):%2rem 定義需要運(yùn)行的程序路徑set curExe=%~dp0%2rem 定義注冊(cè)表路徑set regpath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService\Parameters\rem 定義srvany.exe文件路徑set sourcePath=%~dp0srvany.exerem 進(jìn)入當(dāng)前目錄cd /d "%~dp0"rem 安裝引導(dǎo)服務(wù)instsrv %1 "%sourcePath%"@echo 服務(wù)添加完成rem 添加注冊(cè)表語(yǔ)法: reg add 注冊(cè)表路徑 /v 項(xiàng)名稱(chēng) /t 值類(lèi)型 /d 數(shù)據(jù) /f 表示強(qiáng)行修改不提示rem 名稱(chēng) Application 值為你要作為服務(wù)運(yùn)行的程序地址 /d對(duì)應(yīng)的參數(shù)有斜杠不是為了轉(zhuǎn)義引號(hào),而是路徑還有斜杠,默認(rèn)將引號(hào)轉(zhuǎn)義了,額外添加斜杠是為了保留引號(hào)reg add %regpath% /v AppDirectory /t REG_SZ /d "%~dp0\" /frem 名稱(chēng) AppDirectory 值為你要作為服務(wù)運(yùn)行的程序所在文件夾路徑reg add %regpath% /v Application /t REG_SZ /d "%curExe%" /f rem 名稱(chēng) AppParameters 值為你要作為服務(wù)運(yùn)行的程序啟動(dòng)所需要的參數(shù)reg add %regpath% /v AppParameters /t REG_SZ /f@echo 注冊(cè)表添加完成
2.install.bat 命令含義:進(jìn)入當(dāng)前目錄,調(diào)用當(dāng)前目錄下的run-install.bat文件,并傳入?yún)?shù),完成服務(wù)安裝。服務(wù)名:MyService 執(zhí)行程序:Console.exe
@echo offcd /d %~dp0call run-install.bat MyService Console.exepause
3.run-del.bat 簡(jiǎn)單封裝了卸載服務(wù)的操作,傳入服務(wù)名稱(chēng)即可。
@echo offrem 參數(shù)依次為 服務(wù)名稱(chēng)@echo 服務(wù)名稱(chēng):%1rem 進(jìn)入當(dāng)前目錄cd /d %~dp0rem 卸載引導(dǎo)服務(wù)instsrv %1 remove
4.del.bat 命令含義:進(jìn)入當(dāng)前目錄,調(diào)用當(dāng)前目錄下的run-del.bat文件,并傳入?yún)?shù),完成服務(wù)卸載。服務(wù)名:MyService
@echo offcd /d %~dp0call run-del.bat MyServicepause
總結(jié)
1.按照以上操作即可輕松將程序添加到系統(tǒng)服務(wù)中去?! ?.使用場(chǎng)景為,該程序需要開(kāi)機(jī)啟動(dòng),而且是在Window未登錄的情況下。(常規(guī)的開(kāi)機(jī)啟動(dòng)應(yīng)用程序需要輸入機(jī)器用戶(hù)名、密碼進(jìn)入到桌面后才啟動(dòng)) 3.將程序部署成服務(wù)后,該程序依然可以雙擊啟動(dòng),如果不需要,建議將程序中添加命令行參數(shù)判斷來(lái)禁止雙擊啟動(dòng)該程序?! ?.在服務(wù)的屬性中,可以設(shè)置其與桌面進(jìn)行交互,此時(shí)Window會(huì)提示交互式消息提示,點(diǎn)擊后即可顯示程序窗體。 5.如果你的程序是做成安裝包,調(diào)用安裝服務(wù)的批處理和調(diào)用卸載服務(wù)的批處理,則可以放在安裝程序和卸載程序的時(shí)候去執(zhí)行,簡(jiǎn)化用戶(hù)操作。