使用instsrv.exe+srvany.exe將應用程序安裝為windows服務的方法

一、什么是instsrv.exe和srvany.exe
instsrv.exe.exe和srvany.exe是Microsoft Windows Resource Kits工具集中 的兩個實用工具,這兩個工具配合使用可以將任何的exe應用程序作為window服務運行。srany.exe是注冊程序的服務外殼,可以通過它讓應用程序以system賬號啟動,可以使應用程序作為windows的服務隨機器啟動而自動啟動,從而隱藏不必要的窗口,例如:應用程序控制臺等。那么我們肯定想是不是安裝srvany.exe就可以完成以上功能了呢?答案是正確的,但是安裝srvany.exe需要用到另一個工具instsrv.exe,是的,instsrv.exe的作用就是為了安裝srvany.exe工具,這樣相信大家明白了instsrv.exe和srvany.exe的作用,下面就簡單的介紹如何將exe應用程序做成windows服務。
二、操作步驟
1、獲取應用程序
腳本之家下載:arvany
2、用instsrv.exe安裝srvany.exe
將instsrv.exe和srvany.exe拷貝到"C:\WINDOWS\system32"目錄下(如果是64bit系統(tǒng),則將其拷貝到C:\WINDOWS\SysWOW64),用instsrv.exe安裝srvany.exe,進入dos界面:
C:\Documents and Settings\administrator>C:\WINDOWS\SysWOW64\instsrv.exe MyService C:\WINDOWS\SysWOW64\srvany.exe
注:Myservice是自定義的服務的名稱,可以根據應用程序名稱任意更改。
3、對srvany.exe進行配置
點擊"開始-運行-regedit"打開注冊列表,定位到以下路徑:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService
MyService是你安裝srvany.exe時定義的名稱。
一般情況下該服務名下沒有Parameters項目,需要手動建立:對服務名稱項目右擊新建項,名稱為
Parameters,然后定位到Parameters項,新建以下幾個字符串值。
名稱 Application 值為你要作為服務運行的程序地址。
名稱 AppDirectory 值為你要作為服務運行的程序所在文件夾路徑。
名稱 AppParameters 值為你要作為服務運行的程序啟動所需要的參數。
下面以一個簡單的小程序配置實例說明:
配置完成后,驗證服務如下:
Instsrv.exe和Srvinstw.exe sc.exe creater srvany.exe 對比 區(qū)別在于功能和用法 工具的優(yōu)點和缺點 基礎技術原理
Instsrv.exe
和 Srvinstw.exe
是 Windows 平臺上的服務安裝工具,而 sc.exe
是服務管理工具。它們之間的區(qū)別在于功能和用法:
Instsrv.exe 和 Srvinstw.exe
這兩個工具用于將任何可執(zhí)行文件(如應用程序、腳本等)安裝為 Windows 服務。
Instsrv.exe
用于命令行環(huán)境,而 Srvinstw.exe
則是圖形化界面工具。
它們會創(chuàng)建一個服務項,并將指定的可執(zhí)行文件注冊為該服務的執(zhí)行程序。
這種方法的好處是它們可以將幾乎任何可執(zhí)行文件轉換為服務,但是由于不是所有程序都以服務的方式運行是不推薦的做法。
sc.exe
sc.exe
是 Windows 中的服務控制管理程序,用于創(chuàng)建、配置和管理服務。
通過 sc.exe
可以對系統(tǒng)中的服務進行控制,包括啟動、停止、刪除等操作。
使用 sc.exe
創(chuàng)建服務時,需要指定服務的名稱、可執(zhí)行文件的路徑等信息,并且要確??蓤?zhí)行文件是以服務的形式運行的。
srvany.exe
srvany.exe
是 Windows 平臺上的一個實用程序,允許將任何應用程序(不僅限于服務)作為服務運行。
通過 srvany.exe
,可以將任何可執(zhí)行文件轉換為服務,并按照服務的方式來管理和控制它們。
這種方法的優(yōu)點是可以將幾乎任何應用程序轉換為服務,但需要謹慎使用,因為某些應用程序可能不適合以服務的形式運行,可能會導致意外行為或安全問題。
Instsrv.exe
、Srvinstw.exe
和 sc.exe
是用于服務管理的工具,而 srvany.exe
則是用于將任何應用程序轉換為服務的工具。在選擇工具時,應根據具體需求和情況選擇合適的工具來創(chuàng)建和管理服務。
比較這些工具的優(yōu)點和缺點
Instsrv.exe 和 Srvinstw.exe
優(yōu)點:
簡單易用: 這些工具提供了圖形化和命令行兩種方式,使得創(chuàng)建服務相對容易。
標準化: 它們是 Windows 官方提供的服務安裝工具,因此在 Windows 平臺上具有一定的標準性和可靠性。
適用范圍廣: 可以將幾乎任何可執(zhí)行文件轉換為服務,靈活性較高。
缺點:
不夠靈活: 可以將任何可執(zhí)行文件轉換為服務,但對于一些特殊需求,可能會缺乏靈活性。
依賴于可執(zhí)行文件: 它們將可執(zhí)行文件直接注冊為服務的執(zhí)行程序,因此服務的行為和穩(wěn)定性取決于可執(zhí)行文件本身。
sc.exe
優(yōu)點:
靈活性: sc.exe
具有更多的選項和參數,可以更精細地控制服務的創(chuàng)建和配置。
命令行支持: 適用于需要批量處理或自動化的場景,可以通過腳本實現服務的批量創(chuàng)建和配置。
缺點:
學習曲線較陡: 對于不熟悉命令行操作的用戶來說,學習和使用 sc.exe
可能需要一些時間和技能。
配置繁瑣: 雖然靈活,但也意味著配置較為繁瑣,需要仔細閱讀文檔和理解各個參數的作用。
srvany.exe
優(yōu)點:
靈活性: 可以將任何應用程序轉換為服務,提供了更大的靈活性和自定義能力。
功能強大: 可以通過配置參數來控制應用程序的行為,使其符合服務的要求。
缺點:
潛在風險: 將任何應用程序轉換為服務可能會導致意外行為或安全風險,需要謹慎使用。
不是所有應用程序都適合: 一些應用程序可能不適合以服務的形式運行,可能會導致性能問題或不穩(wěn)定性。
總結:
選擇依據: 根據具體需求和情況選擇合適的工具。如果是標準的可執(zhí)行文件轉換為服務,可以使用 Instsrv.exe
或 Srvinstw.exe
;如果需要更精細的控制和靈活性,可以使用 sc.exe
;如果需要將任意應用程序轉換為服務并具有更大的靈活性,則可以考慮使用 srvany.exe
。
權衡利弊: 在選擇工具時需要權衡各種因素,包括靈活性、易用性、風險等。
比較這些工具的基礎技術原理
Instsrv.exe 和 Srvinstw.exe
基礎技術原理:
- Registry Entries(注冊表項): 這些工具會在 Windows 注冊表中創(chuàng)建相關的服務配置信息。這些信息包括服務的名稱、描述、啟動類型等。
- Service Control Manager(服務控制管理器): 通過向 SCM 發(fā)送相應的請求,這些工具會將服務注冊到 Windows 的服務控制管理器中,使得系統(tǒng)能夠管理和控制這些服務的生命周期。
sc.exe
基礎技術原理:
- 命令行接口:
sc.exe
是一個命令行工具,它通過調用 Windows API 或者直接與服務控制管理器通信來完成服務的創(chuàng)建和配置。 - Windows API:
sc.exe
利用 Windows API 提供的函數來創(chuàng)建、配置和管理服務。這些函數包括 CreateService、OpenSCManager、CloseServiceHandle 等。
srvany.exe
基礎技術原理:
- 服務托管器:
srvany.exe
是一個服務托管器,它允許用戶將任何可執(zhí)行文件轉換為服務。它通過將目標可執(zhí)行文件作為子進程來實現服務的運行。 - 進程控制:
srvany.exe
負責啟動、停止和監(jiān)控目標可執(zhí)行文件的進程。它通過與目標進程進行通信,以便在需要時對其進行管理和控制。
總結
- Instsrv.exe 和 Srvinstw.exe: 這些工具通過注冊表項和服務控制管理器來注冊和管理服務。
- sc.exe: 利用命令行接口和 Windows API 來創(chuàng)建和配置服務。
- srvany.exe: 作為一個服務托管器,它通過啟動和控制目標可執(zhí)行文件的進程來實現服務的運行。
每種工具都有其特定的技術原理和實現方式,根據具體的需求和場景選擇合適的工具是很重要的。
instsrv /?
在 Windows NT 中安裝和移除系統(tǒng)服務INSTSRV <服務名稱> (<可執(zhí)行文件位置> | REMOVE)
[-a <賬戶名>] [-p <賬戶密碼>]安裝服務示例:
INSTSRV MyService C:\MyDir\DiskService.Exe
-OR-
INSTSRV MyService C:\mailsrv\mailsrv.exe -a MYDOMAIN\joebob -p foo
移除服務示例:INSTSRV MyService REMOVE
應用實例
Instsrv.exe 是一個用于安裝和卸載 Windows 服務的命令行工具。下面是一些初級、中級和高級應用實例:
初級應用實例
安裝服務:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe"
這將安裝一個名為 MyService 的服務,其可執(zhí)行文件位于指定路徑。
卸載服務:
Instsrv MyService REMOVE
這將卸載名為 MyService 的服務。
中級應用實例
添加服務描述:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -desc "My Service Description"
這將安裝一個名為 MyService 的服務,并為其添加描述。
設置服務啟動類型:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -auto
這將安裝一個名為 MyService 的服務,并將其設置為自動啟動。
高級應用實例
設置依賴項:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -depend Service1/Service2
這將安裝一個名為 MyService 的服務,并將其設置為依賴于 Service1 和 Service2。
設置服務啟動賬戶:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -user username -pass password
這將安裝一個名為 MyService 的服務,并將其設置為以指定的用戶名和密碼啟動。
請注意,以上示例中的路徑、服務名稱、描述、依賴項、用戶名和密碼應替換為你實際的情況。另外,請確保在運行這些命令之前具有足夠的權限。
安裝服務并指定啟動類型:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -auto
這會安裝名為 MyService 的服務,并將其設置為自動啟動。
安裝服務并指定描述、依賴項和啟動賬戶:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -desc "My Service Description" -depend Service1/Service2 -user username -pass password
這將安裝一個名為 MyService 的服務,并設置其描述為"My Service Description",依賴于 Service1 和 Service2,以指定的用戶名和密碼啟動。
安裝服務并指定服務的顯示名稱:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -name "My Custom Service Name"
這會安裝一個名為 MyService 的服務,并將其顯示名稱設置為 "My Custom Service Name"。
安裝服務并指定服務的啟動參數:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -params "param1 param2"
這將安裝一個名為 MyService 的服務,并設置其啟動參數為 "param1 param2"。
安裝服務并設置服務的啟動順序:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -order 2
這會安裝一個名為 MyService 的服務,并將其設置為第二個啟動。
請注意,這些示例中的路徑、服務名稱、描述、依賴項、用戶名、密碼、顯示名稱、啟動參數和啟動順序應替換為你實際的情況
安裝服務并設置服務的重啟策略:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -recovery restart/60000/restart/60000/restart/60000
這會安裝一個名為 MyService 的服務,并設置其在發(fā)生故障時的重啟策略為在每次故障后等待 60000 毫秒(即 1 分鐘),然后重啟服務。
安裝服務并設置服務的啟動延遲:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -delayed
這將安裝一個名為 MyService 的服務,并將其設置為延遲啟動。
安裝服務并設置服務的啟動失敗時的動作:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -failureactions restart/60000/restart/60000/restart/60000
這會安裝一個名為 MyService 的服務,并設置其在啟動失敗時的動作為在每次啟動失敗后等待 60000 毫秒(即 1 分鐘),然后重啟服務。
這些是一些 Instsrv 命令的高級應用實例,它們允許你更詳細地配置安裝的服務。
安裝服務并設置服務的失敗重啟計數器:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -failcount 3/60000
這會安裝一個名為 MyService 的服務,并設置其在連續(xù)失敗 3 次后等待 60000 毫秒(即 1 分鐘)再次嘗試啟動服務。
安裝服務并設置服務的暫停和繼續(xù)時的命令:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -pausedrecovery restart/60000/restart/60000/restart/60000 -pausedrestartcmd "pause"
這將安裝一個名為 MyService 的服務,并設置其在暫停后的恢復策略為在每次暫停后等待 60000 毫秒(即 1 分鐘),然后重啟服務,并且設置暫停后的繼續(xù)命令為 "pause"。
安裝服務并設置服務的故障處理程序:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -failure reset/restart/60000
這會安裝一個名為 MyService 的服務,并設置其在故障時的處理程序為重新設置服務狀態(tài),然后等待 60000 毫秒(即 1 分鐘)后重啟服務。
請注意,這些示例中的路徑、服務名稱、啟動參數、延遲、失敗計數器、暫?;謴筒呗?、繼續(xù)命令和故障處理程序應替換為你實際的情況。
安裝服務并設置服務的故障恢復選項:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -failureactions restart/60000/restart/60000/run/Path\To\RecoveryScript.bat
這會安裝一個名為 MyService 的服務,并設置其在故障時的恢復選項為在每次故障后等待 60000 毫秒(即 1 分鐘),然后重啟服務,并在第三次故障后運行指定的恢復腳本。
安裝服務并設置服務的日志記錄選項:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -eventlog Application -events Info/Warning/Error
這將安裝一個名為 MyService 的服務,并將其日志記錄到應用程序日志中,僅記錄信息、警告和錯誤級別的事件。
安裝服務并設置服務的交互式屬性:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -interactive
這會安裝一個名為 MyService 的服務,并允許其與桌面交互,通常用于需要與用戶交互的服務。
安裝服務并設置服務的描述信息:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -description "This is a description of MyService."
這將安裝一個名為 MyService 的服務,并設置其描述信息為指定的描述文本。
安裝服務并設置服務的依賴項:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -depend Service1/Service2
這會安裝一個名為 MyService 的服務,并設置其依賴于 Service1 和 Service2 服務。
安裝服務并設置服務的用戶名和密碼:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -user Domain\User -password Password
這會安裝一個名為 MyService 的服務,并將其配置為以指定的域用戶和密碼身份運行。
安裝服務并設置服務的啟動類型:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -autostart
這將安裝一個名為 MyService 的服務,并將其配置為自動啟動,即在系統(tǒng)啟動時自動啟動。
安裝服務并設置服務的啟動類型為手動:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -manualstart
這會安裝一個名為 MyService 的服務,并將其配置為手動啟動,即需要手動啟動該服務。
安裝服務并設置服務的啟動類型為禁用:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -disabled
這將安裝一個名為 MyService 的服務,并將其配置為禁用狀態(tài),即無法啟動該服務。
安裝服務并設置服務的啟動延遲:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -startdelay 30000
這會安裝一個名為 MyService 的服務,并設置其啟動延遲為 30000 毫秒(即 30 秒)。
安裝服務并設置服務的啟動參數:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -params "param1 param2"
這將安裝一個名為 MyService 的服務,并設置其啟動參數為 "param1 param2"。
安裝服務并設置服務的顯示名稱:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -displayname "My Custom Service Name"
這將安裝一個名為 MyService 的服務,并設置其顯示名稱為 "My Custom Service Name"。
安裝服務并設置服務的啟動順序:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -starttype boot
這會安裝一個名為 MyService 的服務,并將其配置為在系統(tǒng)啟動時啟動,且在所有其他自動啟動服務之前啟動。
安裝服務并設置服務的啟動失敗的重試間隔:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -failureresetperiod 3600000
這將安裝一個名為 MyService 的服務,并設置其啟動失敗后的重試間隔為 3600000 毫秒(即 1 小時)。
安裝服務并設置服務的故障恢復次數:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -failureactions restart/60000/restart/60000/run/Path\To\RecoveryScript.bat -failureflag reset 3
這會安裝一個名為 MyService 的服務,并設置其在連續(xù) 3 次故障后重置服務失敗計數器。
安裝服務并設置服務的故障恢復動作:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -failureactions restart/60000/restart/60000/run/Path\To\RecoveryScript.bat
這會安裝一個名為 MyService 的服務,并設置其在服務故障時,首先嘗試在 60 秒后重啟服務,如果再次失敗,則再次嘗試在 60 秒后重啟服務,最后如果再次失敗,則運行指定的恢復腳本。
安裝服務并設置服務的故障恢復標志:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -failureflag reset
這將安裝一個名為 MyService 的服務,并設置其在服務恢復成功后重置服務失敗計數器。
安裝服務并設置服務的故障恢復重啟次數:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -recoveryrestartcount 3
這將安裝一個名為 MyService 的服務,并設置其允許的故障恢復重啟次數為 3 次。
安裝服務并設置服務的退出代碼映射:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -exitsc error1/success/error2/error3
這將安裝一個名為 MyService 的服務,并將服務的退出代碼映射為 error1 表示錯誤 1,success 表示成功,error2 表示錯誤 2,error3 表示錯誤 3。
安裝服務并設置服務的依賴關系:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -depend Service1/Service2
這將安裝一個名為 MyService 的服務,并將其設置為依賴于 Service1 和 Service2 服務。
安裝服務并設置服務的描述信息:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -description "My Custom Service Description"
這將安裝一個名為 MyService 的服務,并設置其描述信息為 "My Custom Service Description"。
安裝服務并設置服務的賬戶及密碼:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -account Username -password Password
這會安裝一個名為 MyService 的服務,并設置其以指定的用戶名和密碼運行。
安裝服務并設置服務的啟動延遲:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -delayedauto
這將安裝一個名為 MyService 的服務,并設置其在系統(tǒng)啟動后延遲自動啟動。
安裝服務并設置服務的啟動類型:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -autostart
這會安裝一個名為 MyService 的服務,并設置其為自動啟動類型,即系統(tǒng)啟動時會自動啟動該服務。
安裝服務并設置服務的交互式標志:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -interactive
這將安裝一個名為 MyService 的服務,并允許該服務與桌面交互。
安裝服務并設置服務的啟動失敗動作:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -failureactions restart/60000/restart/60000/run/Path\To\FailureScript.bat
這將安裝一個名為 MyService 的服務,并設置其在啟動失敗時執(zhí)行指定的故障恢復動作,如重啟服務或運行指定的故障處理腳本。
安裝服務并設置服務的啟動參數:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -params "YourCommandParams"
這將安裝一個名為 MyService 的服務,并設置其啟動時的命令參數為 "YourCommandParams"。
至此,使用instsrv.exe+srvany.exe將應用程序安裝為windows服務介紹完畢,如果大家有其他好的建議和方法,還請多多指點,謝謝!
相關文章
- 關于組織者架構圖不要再傻傻的一個一個的畫了,我們使用AI工具來生成很快捷,今天我們就來看看使用kimi生成組織架構圖的技巧2025-05-12
別再傻傻的用DeepSeek了! 核對excel表格數據用豆包才是永遠的神
之前DeepSeek大火,都是用DeepSeek處理數據,后來發(fā)現豆包也可以實現,下面我們就來看看用豆包核對數據的技巧2025-05-06太方便了吧! 用DeepSeek和豆包自動生成排班表的實例教程
以前排版都是用excel,操作也不算簡單,現在可以直接用DeepSeek和豆包來智能排版,詳細請看下文介紹2025-05-01職場人慌了! DeepSeek配合Mermaid自動繪圖的技巧
DeepSeek這玩意兒,配合Mermaid,自動生成甘特圖,這速度,這效率,簡直了神奇了,下面我們就來看看用法2025-03-05- 今天匯總15個很值得收藏的DeepSeek 提示詞,包含職場打工人必備,自媒體爆款創(chuàng)作,學生黨逆襲,個人成長開掛等等全方面2025-03-04
如何在iPhone上部署DeepSeek-R1? DeepSeek-R1在手機上部署全攻略
你以為只在大機器上跑的模型,其實在手機上也能玩得轉!為了體驗一下國產模型的魅力,我在蘋果手機上部署了DeepSeek-R1 1.5B版,詳細步驟如下2025-03-01- 我們之前分享了很多DeepSeek安裝及本地部署教程,今天我們來看看怎么馴化DeepSeek為自己服務,下面我們就來看看DeepSeek 7天指導手冊2025-02-21
手機端本地部署 Deepseek +桌面端 Deepseek 搭建知識庫指南
關于 Deepseek,這段時間也傳來不少新聞,本文將介紹如何在安卓手機和桌面設備上分別部署本地運行的 Deepseek R1 模型,并搭建知識庫,詳細如下文2025-02-21DeepSeek-R1 與 AnythingLLM 安裝部署本地知識庫詳細教程
DeepSeek R1是目前最火的大模型,近來有很多朋友問怎么搭建DeepSeek 本地知識庫,在這里分享一種使用DeepSeek + AnythingLLM快速搭建本地知識庫的方法,完全本地化,懶人必2025-02-20DeepSeek怎么獲取官方API? 一文教會你獲取DeepSeek官方API技巧
想要體驗DeepSeek,該怎么貨期官方API呢?下面我們就來看看獲取DeepSeek官方API的詳細圖文教程2025-02-12