使用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系统,则将其拷贝到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 对比 区别在于功能和用法 工具的优点和缺点 基础技术原理
Instsrv.exe
和 Srvinstw.exe
是 Windows 平台上的服务安装工具,而 sc.exe
是服务管理工具。它们之间的区别在于功能和用法:
Instsrv.exe 和 Srvinstw.exe
这两个工具用于将任何可执行文件(如应用程序、脚本等)安装为 Windows 服务。
Instsrv.exe
用于命令行环境,而 Srvinstw.exe
则是图形化界面工具。
它们会创建一个服务项,并将指定的可执行文件注册为该服务的执行程序。
这种方法的好处是它们可以将几乎任何可执行文件转换为服务,但是由于不是所有程序都以服务的方式运行是不推荐的做法。
sc.exe
sc.exe
是 Windows 中的服务控制管理程序,用于创建、配置和管理服务。
通过 sc.exe
可以对系统中的服务进行控制,包括启动、停止、删除等操作。
使用 sc.exe
创建服务时,需要指定服务的名称、可执行文件的路径等信息,并且要确保可执行文件是以服务的形式运行的。
srvany.exe
srvany.exe
是 Windows 平台上的一个实用程序,允许将任何应用程序(不仅限于服务)作为服务运行。
通过 srvany.exe
,可以将任何可执行文件转换为服务,并按照服务的方式来管理和控制它们。
这种方法的优点是可以将几乎任何应用程序转换为服务,但需要谨慎使用,因为某些应用程序可能不适合以服务的形式运行,可能会导致意外行为或安全问题。
Instsrv.exe
、Srvinstw.exe
和 sc.exe
是用于服务管理的工具,而 srvany.exe
则是用于将任何应用程序转换为服务的工具。在选择工具时,应根据具体需求和情况选择合适的工具来创建和管理服务。
比较这些工具的优点和缺点
Instsrv.exe 和 Srvinstw.exe
优点:
简单易用: 这些工具提供了图形化和命令行两种方式,使得创建服务相对容易。
标准化: 它们是 Windows 官方提供的服务安装工具,因此在 Windows 平台上具有一定的标准性和可靠性。
适用范围广: 可以将几乎任何可执行文件转换为服务,灵活性较高。
缺点:
不够灵活: 可以将任何可执行文件转换为服务,但对于一些特殊需求,可能会缺乏灵活性。
依赖于可执行文件: 它们将可执行文件直接注册为服务的执行程序,因此服务的行为和稳定性取决于可执行文件本身。
sc.exe
优点:
灵活性: sc.exe
具有更多的选项和参数,可以更精细地控制服务的创建和配置。
命令行支持: 适用于需要批量处理或自动化的场景,可以通过脚本实现服务的批量创建和配置。
缺点:
学习曲线较陡: 对于不熟悉命令行操作的用户来说,学习和使用 sc.exe
可能需要一些时间和技能。
配置繁琐: 虽然灵活,但也意味着配置较为繁琐,需要仔细阅读文档和理解各个参数的作用。
srvany.exe
优点:
灵活性: 可以将任何应用程序转换为服务,提供了更大的灵活性和自定义能力。
功能强大: 可以通过配置参数来控制应用程序的行为,使其符合服务的要求。
缺点:
潜在风险: 将任何应用程序转换为服务可能会导致意外行为或安全风险,需要谨慎使用。
不是所有应用程序都适合: 一些应用程序可能不适合以服务的形式运行,可能会导致性能问题或不稳定性。
总结:
选择依据: 根据具体需求和情况选择合适的工具。如果是标准的可执行文件转换为服务,可以使用 Instsrv.exe
或 Srvinstw.exe
;如果需要更精细的控制和灵活性,可以使用 sc.exe
;如果需要将任意应用程序转换为服务并具有更大的灵活性,则可以考虑使用 srvany.exe
。
权衡利弊: 在选择工具时需要权衡各种因素,包括灵活性、易用性、风险等。
比较这些工具的基础技术原理
Instsrv.exe 和 Srvinstw.exe
基础技术原理:
- Registry Entries(注册表项): 这些工具会在 Windows 注册表中创建相关的服务配置信息。这些信息包括服务的名称、描述、启动类型等。
- Service Control Manager(服务控制管理器): 通过向 SCM 发送相应的请求,这些工具会将服务注册到 Windows 的服务控制管理器中,使得系统能够管理和控制这些服务的生命周期。
sc.exe
基础技术原理:
- 命令行接口:
sc.exe
是一个命令行工具,它通过调用 Windows API 或者直接与服务控制管理器通信来完成服务的创建和配置。 - Windows API:
sc.exe
利用 Windows API 提供的函数来创建、配置和管理服务。这些函数包括 CreateService、OpenSCManager、CloseServiceHandle 等。
srvany.exe
基础技术原理:
- 服务托管器:
srvany.exe
是一个服务托管器,它允许用户将任何可执行文件转换为服务。它通过将目标可执行文件作为子进程来实现服务的运行。 - 进程控制:
srvany.exe
负责启动、停止和监控目标可执行文件的进程。它通过与目标进程进行通信,以便在需要时对其进行管理和控制。
总结
- Instsrv.exe 和 Srvinstw.exe: 这些工具通过注册表项和服务控制管理器来注册和管理服务。
- sc.exe: 利用命令行接口和 Windows API 来创建和配置服务。
- srvany.exe: 作为一个服务托管器,它通过启动和控制目标可执行文件的进程来实现服务的运行。
每种工具都有其特定的技术原理和实现方式,根据具体的需求和场景选择合适的工具是很重要的。
instsrv /?
在 Windows NT 中安装和移除系统服务INSTSRV <服务名称> (<可执行文件位置> | 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 的服务,其可执行文件位于指定路径。
卸载服务:
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 的服务,并设置其在发生故障时的重启策略为在每次故障后等待 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 的服务,并设置其在连续失败 3 次后等待 60000 毫秒(即 1 分钟)再次尝试启动服务。
安装服务并设置服务的暂停和继续时的命令:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -pausedrecovery restart/60000/restart/60000/restart/60000 -pausedrestartcmd "pause"
这将安装一个名为 MyService 的服务,并设置其在暂停后的恢复策略为在每次暂停后等待 60000 毫秒(即 1 分钟),然后重启服务,并且设置暂停后的继续命令为 "pause"。
安装服务并设置服务的故障处理程序:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -failure reset/restart/60000
这会安装一个名为 MyService 的服务,并设置其在故障时的处理程序为重新设置服务状态,然后等待 60000 毫秒(即 1 分钟)后重启服务。
请注意,这些示例中的路径、服务名称、启动参数、延迟、失败计数器、暂停恢复策略、继续命令和故障处理程序应替换为你实际的情况。
安装服务并设置服务的故障恢复选项:
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 的服务,并将其配置为自动启动,即在系统启动时自动启动。
安装服务并设置服务的启动类型为手动:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -manualstart
这会安装一个名为 MyService 的服务,并将其配置为手动启动,即需要手动启动该服务。
安装服务并设置服务的启动类型为禁用:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -disabled
这将安装一个名为 MyService 的服务,并将其配置为禁用状态,即无法启动该服务。
安装服务并设置服务的启动延迟:
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 的服务,并将其配置为在系统启动时启动,且在所有其他自动启动服务之前启动。
安装服务并设置服务的启动失败的重试间隔:
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 的服务,并设置其在连续 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 的服务,并设置其在系统启动后延迟自动启动。
安装服务并设置服务的启动类型:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -autostart
这会安装一个名为 MyService 的服务,并设置其为自动启动类型,即系统启动时会自动启动该服务。
安装服务并设置服务的交互式标志:
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 的服务,并设置其在启动失败时执行指定的故障恢复动作,如重启服务或运行指定的故障处理脚本。
安装服务并设置服务的启动参数:
Instsrv MyService "C:\Path\To\Your\Service\Executable.exe" -params "YourCommandParams"
这将安装一个名为 MyService 的服务,并设置其启动时的命令参数为 "YourCommandParams"。
至此,使用instsrv.exe+srvany.exe将应用程序安装为windows服务介绍完毕,如果大家有其他好的建议和方法,还请多多指点,谢谢!