程序注冊
『壹』 如何將應用程序exe注冊成服務,直接從後台運行
用Instsrv.exe(可以給系統安裝和刪除服務)和Srvany.exe(可以讓程序以服務的方式運行)
要實現這個功能要用到微軟提供的兩個小工具「instsrv.exe」和「srvany.exe」。先下載這兩個程序然後放在同一個目錄,我是直接放在D盤的,然後進入到DOS命令行下面輸入如下命令注冊服務:
d:\instsrv.exe tjserver d:\srvany.exe //tjserver是服務名
這個命令是把srvany.exe這個程序注冊成了系統服務
然後進入注冊表在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services下找到剛剛注冊的服務名tjserver,在tjserver新建一個項,名稱為「Parameters」,單擊選中它然後在右側的窗口新建一個字元串值名稱為「Application」,將其值設置為你針要做為服務運行的程序的路徑,例如我的路徑為「D:\\tools\\tjs.exe」。這里特別要注意的是程序路徑一定要寫得跟前面的例子一樣,也是就是中間是用雙斜杠隔開,不然服務沒辦法自動啟動。
然後可以再建立一個AppDirectory指定程序運行的初始目錄(可選)。
如果你需要把自己注冊的服務做得看起來更專業也更好理解的話還可以繼續新建一個字元串值名稱為「Description」,在其值裡面你可以輸入你想顯示的服務描述。
『貳』 如何將應用程序注冊為系統服務
方法一:使用windows自帶的命令sc 使用sc create 方法創建。 如:sc create CaptureScreen
binpath=
F:\zwmei-project\decklink-learning\OutputBitmap\Debug\OutputBitmap.exe
type= own start= auto displayname= Screen_Capture 其中
CaptureScreen為服務名,可以在系統服務中找到,(通過在命令行運行services.msc打開系統服務)。binpath為你的應用程序所在的路徑。
displayname為服務顯示的名稱,這個在注冊表中可以找到,(通過在命令行中輸入regedit打開注冊表,在HKEY_LOCAL_MACHINE
-- SYSTEM -- CurrentControlSet 下找到你的服務顯示名)
注意:在sc命令中,=號前面不能有空格,而=號後面必須有一個空格,切記。另外要以管理員的身份打開命令行。
這種方法不一定能成功,如果你的exe不符合服務的規范,可能會啟動失敗。下面我們討論第二種方法
方法二:在第一種方法失敗的情況下,我們可以使用instsrv.exe和srvany.exe兩個小工具為我們分憂解難
我們可以在官網下載instsrv.exe 和 srvany.exe 然後放到自己的文件夾中,可以將文件夾放入C盤。下面我們開始注冊服務。
已管理員的身份運行命令行,首先進入工具所在的文件夾,如:c:\tools。 執行c:\toolsinstsrv.exe ServerName
srvany.exe 這樣我們就創建了一個名為ServerName的srvany的服務,那麼我們自己的exe該放在哪呢。下面我們打開注冊表
找到ServiceName這個服務,然後右鍵 新建
項,名稱為Parameters。單擊該項,然後在右邊新建兩個字元串值。第一個名為Application,值為:應用程序路徑,如:c:\myApp.exe。第二個名為AppDirectory,值為:應用程序所在目錄,如:c:\。
接下來我們進入系統服務,找到ServiceName這個服務,雙擊進入它的屬性。設置允許與桌面交互。然後啟動服務。
至此我們完成了將exe注冊為服務的過程。 下面我們分析一下:
instsrv.exe可以創建和刪除服務,然而如果沒有srvany.exe的參與,創建的服務可能無法啟動。那麼srvany.exe做了些什麼呢,啟動服務後我們可以在任務管理器中找到我們的服務,然後右擊服務,選擇轉到進程,(如果進程中沒有任何項被選中,則點擊下面的顯示所有用戶進程,然後重新選擇轉至進程),我們看到的是srvany.exe,而不是我們自己的exe。原來我們的exe成為了它的一個子項,由srvany.exe幫助啟動。
『叄』 如何將應用程序exe注冊成服務
方法一:使用windows自帶的命令sc
使用sc create 方法創建。
如:sc create CaptureScreen binpath= F:\zwmei-project\decklink-learning\OutputBitmap\Debug\OutputBitmap.exe type= own start= auto displayname= Screen_Capture
其中 CaptureScreen為服務名,可以在系統服務中找到,(通過在命令行運行services.msc打開系統服務)。binpath為你的應用程序所在的路徑。 displayname為服務顯示的名稱,這個在注冊表中可以找到,(通過在命令行中輸入regedit打開注冊表,在HKEY_LOCAL_MACHINE -- SYSTEM -- CurrentControlSet 下找到你的服務顯示名)
注意:在sc命令中,=號前面不能有空格,而=號後面必須有一個空格,切記。另外要以管理員的身份打開命令行。
這種方法不一定能成功,如果你的exe不符合服務的規范,可能會啟動失敗。下面我們討論第二種方法
方法二:在第一種方法失敗的情況下,我們可以使用instsrv.exe和srvany.exe兩個小工具為我們分憂解難
我們可以在官網下載instsrv.exe 和 srvany.exe 然後放到自己的文件夾中,可以將文件夾放入C盤。下面我們開始注冊服務。
已管理員的身份運行命令行,首先進入工具所在的文件夾,如:c:\tools。
執行c:\toolsinstsrv.exe ServerName srvany.exe
這樣我們就創建了一個名為ServerName的srvany的服務,那麼我們自己的exe該放在哪呢。下面我們打開注冊表
找到ServiceName這個服務,然後右鍵 新建 項,名稱為Parameters。單擊該項,然後在右邊新建兩個字元串值。第一個名為Application,值為:應用程序路徑,如:c:\myApp.exe。第二個名為AppDirectory,值為:應用程序所在目錄,如:c:\。
接下來我們進入系統服務,找到ServiceName這個服務,雙擊進入它的屬性。設置允許與桌面交互。然後啟動服務。
至此我們完成了將exe注冊為服務的過程。
下面我們分析一下:
instsrv.exe可以創建和刪除服務,然而如果沒有srvany.exe的參與,創建的服務可能無法啟動。那麼srvany.exe做了些什麼呢,啟動服務後我們可以在任務管理器中找到我們的服務,然後右擊服務,選擇轉到進程,(如果進程中沒有任何項被選中,則點擊下面的顯示所有用戶進程,然後重新選擇轉至進程),我們看到的是srvany.exe,而不是我們自己的exe。原來我們的exe成為了它的一個子項,由srvany.exe幫助啟動。