winsw介紹
有時候我們需要在Windows下開機(jī)運(yùn)行某些程序,這對于有圖形界面的程序來說一般不是什么事,在選項(xiàng)中選中開機(jī)啟動,然后它們就可以自動運(yùn)行了。但是如果我們想運(yùn)行一些命令行程序的話就沒這么方便了。
原來我的做法是寫一個bat腳本,然后將它的快捷方式復(fù)制到C:/ProgramData/Microsoft/Windows/Start Menu/Programs/StartUp,這樣就可以開機(jī)自啟了。不過這種方式有一個非常大的缺點(diǎn),就是開機(jī)之后會顯示一個命令行窗口!而且這個窗口還不能關(guān),一關(guān)程序就停了。
其實(shí)Windows自帶了一個后臺程序管理的功能,就是我們經(jīng)常用到的服務(wù)。但是Windows的服務(wù)只有程序的開發(fā)者在寫程序的時候引用到這個功能,我們才能利用服務(wù)來控制程序的啟動和關(guān)閉。對于一般的命令行程序來說,沒辦法利用服務(wù)。所以今天我們就來使用一下標(biāo)題的這個winsw。它可以將Windows上的任何一個程序注冊為服務(wù),如果不需要,也可以方便的卸載服務(wù)。
使用winsw
首先要下載winsw。它是一個單個的可執(zhí)行文件,我們到Github release這里就可以下載winsw了。一般來說當(dāng)然是下載最新的。winsw可以運(yùn)行在.NET2和.NET4兩個版本上,當(dāng)然如果使用Win10等比較新的系統(tǒng),最好下載更新版本的.NET。
下載完之后最好把文件改成一個比較短小的名字,例如winsw.exe這樣的,方便后面輸入命令。
編寫配置文件
我們需要編寫一個和程序同名的XML文件作為winsw的配置文件。文件大體上長這樣,這是官網(wǎng)的例子。
<service> <id>jenkins</id> <name>Jenkins</name> <description>This service runs Jenkins continuous integration system.</description> <env name="JENKINS_HOME" value="%BASE%"/> <executable>java</executable> <arguments>-Xrs -Xmx256m -jar "%BASE%/jenkins.war" --httpPort=8080</arguments> <logmode>rotate</logmode> </service>
看到XML的標(biāo)簽名,我想大家也能猜到這些參數(shù)是干嘛的,所以我就不介紹了。下面是我的一個配置文件例子。
<service> <id>kcp</id> <name>kcp</name> <description>這個服務(wù)用來將ss使用kcp協(xié)議加速</description> <executable>client_windows_amd64</executable> <arguments>-c kcp-config.json</arguments> <logmode>reset</logmode></service>
注冊服務(wù)
編寫好配置文件之后,記得把配置文件和可執(zhí)行文件放在一起,這樣winsw才能正確識別配置文件。然后我們打開一個管理員權(quán)限的命令提示符或Powershell窗口,然后輸入下面的命令,如果返回值為0,說明已將程序注冊為服務(wù)。
新聞熱點(diǎn)
疑難解答
圖片精選