srvany.exe是什么?

srvany.exe是Microsoft Windows Resource Kits工具集的一个实用的小工具,用于将任何EXE程序作为Windows服务运行。也就是说srvany只是其注册程序的服务外壳,这个特性对于我们来说非常实用,我们可以通过它让我们的程序以SYSTEM账户启动,或者实现随机器启动而自启动,也可以隐藏不必要的窗口,比如说控制台窗口等等。

如何获取?

你可以通过下载并安装Microsoft Windows Resource Kits获得或者可以通过我分享的下载地址1(国内线路)、下载地址2(国外线路)得到。

如何使用?

当你获取到srvany后并决定将某程序作为服务启动后,请先将srvany安装为系统服务,具体的安装方法有很多,比如说可以通过Microsoft Windows Resource Kits中另外一个实用的小工具instsrv.exe进行安装(下载地址),将srvany.exe和instsrv.exe拷贝到C:\Windows\System32\后,我们可以通过下面的命令行进行srvany.exe的服务安装:

instsrv ServiceName C:\Windows\System32\srvany.exe

ServiceName即你自己定义的服务名称,可以是要作为系统服务启动的应用程序的名称。

安装完毕后,我们需要对srvany.exe进行配置,以便于能够加载我们指定的程序,配置的方法是,开始 – 运行 – regedit,打开注册表,定位到下面的路径。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ServiceName

同样的ServiceName是你刚才安装服务时自定义的服务名称。

如果该服务名下没有Parameters项目,则对服务名称项目右击新建项,名称为Parameters,然后定位到Parameters项,新建以下几个字符串值。

名称 Application 值为你要作为服务运行的程序地址。
名称 AppDirectory 值为你要作为服务运行的程序所在文件夹路径。
名称 AppParameters 值为你要作为服务运行的程序启动所需要的参数。

比如这里是个配置实例,我们这里配置的服务名称是NGINX,其余是nginx的安装配置情况。

当然还有一个比较简单的做法,那就是将下面的文本保存为*.reg文件,然后双击导入注册表。

1
2
3
4
5
6
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\服务名称\Parameters]
"Application"="值为你要作为服务运行的程序地址"
"AppDirectory"="值为你要作为服务运行的程序所在文件夹路径"
"AppParameters"="值为你要作为服务运行的程序启动所需要的参数"

2011年7月14日更新

找到微软的官方文章《如何创建用户定义的服务》,大家可以看一看。

2012年2月27日更新

今天有朋友问到将某窗体程序通过srvany作为服务运行的时候,桌面右下角图标和窗体无法显示,这个就涉及到服务的运行方式了,一般服务程序是不包含窗体的,所以系统默认可能会抑制这些服务程序产生的窗体,如果你的服务程序比较特殊,确实需要出现窗体,可以参考下面的办法:

控制面板 – 管理工具 – 服务(或者 开始 – 运行 – services.msc 确认)打开服务管理器,选择你刚刚安装并需要展示窗体的服务,然后右击选择属性,切换到 “登录” 选项卡,勾选上 “允许服务与桌面交互” 然后按确定保存,重启你的服务,看看窗体是否出现了:

2012年7月3日更新

为了大家利用srvany.exe创建自定义服务的方便我特别写了个名叫SrvanyUI的服务创建管理的小工具,大家可以移步这篇文章《SrvanyUI服务管理工具发布》来获得详细信息,这里放个截图:

2012年7月5日更新

找到微软的一篇文章可以参考《故障排除使用 Cmd.exe 的 SrvAny》。

2012年7月23日更新

近期有朋友咨询为什么勾选上 “允许服务与桌面交互”,窗体程序依旧不能显示,其实这个办法只适用于Windows XP或者Windows 2003系列的操作系统,对于以上版本的Windows Vista、Windows 2008、Windows 7以及Windows 2008 R2,微软做了改变,使用了Session 0会话隔离策略,所以再使用这个办法强制服务窗体显示就会出现提示框,只有手动允许后才会出现界面,并且桌面风格也将被更改:

此计算机上运行的程序正在尝试显示一条消息,程序可能需要您的信息或权限来完成任务。

交互式服务检测
此计算机上运行的程序正在尝试显示一条消息
程序可能需要您的信息或权限来完成任务。

关于Vista及高版本Windows交互出现提示框是由Interactive Services Detection服务控制的。禁用此服务将不会出现上述提示框,当然窗体也就不会显示了。

更详细的信息可以参考MSDN的《Interactive Services》文章。

特别注意下面这段:

Important Services cannot directly interact with a user as of Windows Vista. Therefore, the techniques mentioned in the section titled Using an Interactive Service should not be used in new code.

如果要在新的Vista及以上操作系统上显示窗体,我们应当使用新的技术,比如使用WTSSendMessage在用户会话显示对话框,或者将服务程序与窗体分离开来再使用进程通信(推荐)。

关于编程的方法可以参考这篇文章《解决vista和win7在windows服务中交互桌面权限问题:穿透Session 0 隔离》

抱歉的是目前的办法仅限于编程方面的,其他有效的办法我暂时还没有找到。

部分参考文档:

  • 《What is Interactive Services Detection and Why is it Blinking at Me?》
  • 《How can a Windows service execute a GUI application?》

2012年2月27日更新

对于带参数的命令行方式直接利用srvany.exe创建自定义服务请参考文章《WScript/VBScript命令行参数使用srvany.exe创建自定义服务》。

END

转自:http://wangye.org/blog/archives/42/

黄聪:使用srvany.exe将任何程序作为Windows服务运行相关推荐

  1. 使用srvany.exe将任何程序作为Windows服务运行

    使用srvany.exe将任何程序作为Windows服务运行 学习了:http://wangye.org/blog/archives/42/ https://www.cnblogs.com/huang ...

  2. 把java程序作为windows服务运行

    参考: https://www.jianshu.com/p/fc9e4ea61e13 https://blog.csdn.net/qq_28566071/article/details/8088250 ...

  3. 使用instsrv.exe+srvany.exe将应用程序安装为windows服务

    一.什么是instsrv.exe和srvany.exe instsrv.exe.exe和srvany.exe是Microsoft Windows Resource Kits工具集中 的两个实用工具,这 ...

  4. 使用instsrv.exe和srvany.exe将应用程序安装成windows后台服务

    instsrv.exe.exe和srvany.exe是Microsoft Windows Resource Kits工具集中 的两个实用工具,这两个工具配合使用可以将任何的exe应用程序作为windo ...

  5. 如何注册java程序为windows服务

    最近想找个软件来控制电脑的关机时间,在网上找了几个,都是可视化界面的可以设置具体的关机时间的软件.由于我想编写的关机程序是运行在别人机器上,只能让该机器在晚上17 点到23 点25 分才上网,到了23 ...

  6. 将Java程序转换为Windows服务 作者:IT168 seasky 2007-09-19

    [IT168 专稿] 一.概述 现在Java语言越来越受到程序员的关注.和Java相关的应用也越来越多.虽然Java是跨平台语言,但在国内有很多的应用都是运行在Windows下的.尤其是一些服务类程序 ...

  7. C#将控制台程序配置为服务运行

    1.需求描述 本控制台应用程序是一个数据采集模块,需要在开机时就运行程序.程序运行时在显示在桌面上,在对电脑进行操作时可能会误关运行程序,这样会影响数据采集. 2.解决方法 (1)程序设置为开机自启, ...

  8. 用instsrv.exe+srvany.exe将应用程序安装为windows服务

    下载 链接:https://pan.baidu.com/s/1gKu_WwVo-TeWXmrGAr9qjw 提取码:s1vm 用instsrv.exe安装srvany.exe 将instsrv.exe ...

  9. 【Windows】普通控制台EXE程序转为windows服务方式运行的详细步骤

    背景 NSSM(Non-Sucking Service Manager)是一个免费的第三方Windows服务管理器,可以将任何可执行文件转换为Windows服务.官网下载地址为:https://nss ...

最新文章

  1. 在macOS Sierria 10.12.2上升级默认的vim
  2. 尝试从远程计算机访问Web服务不显示调用按钮
  3. Windows 8 Directx 开发学习笔记(八)要有光
  4. 基于FPGA实现uart串口模块——进阶版1
  5. JSONObject 与 JSONArray 使用
  6. 【mysql】扩展-变量_存储过程_函数
  7. 【图像隐写】基于matlab GUI DCT+FFT数字水印嵌入+攻击+提取(带面板)【含Matlab源码 1760期】
  8. Android回声消除调研 20220321
  9. 画出清明上河图的代码_制作阴影立体动态图文图的代码【清明上河图】
  10. [读书]《罗辑思维》第一季、第二季推荐书籍清单
  11. Loki搭建日志收集系统
  12. JFreechart中文在AIX下显示方框解决方法
  13. Markdown语法图文全面详解(10分钟学会)
  14. 解决Docker 一直starting 的办法
  15. 基于ANSYS WORKBENCH的装配体分析
  16. 物权法全文内容有哪些呢-广告外链_有哪些网络推广免费平台?通过哪些平台进行免费推广及注意事项?...
  17. 基于Python的经纬度与xy坐标系相互转换
  18. Java 学习总结 Week2
  19. (SGPN)南加州大学 phd 王薇月:深度学习在点云分割中的应用 | 公开课视频内容分享总结
  20. (二)zynq芯片是什么

热门文章

  1. JavaScript PHP模仿C#中string.format效果
  2. 号外号外!RancherOS v1.2.0发布啦!
  3. 怎样在 Github 上找自己喜欢的东西?
  4. 1.7. FreeBSD 初始化设置
  5. sping拦截器配置顺序影响事务正常运行
  6. Dataguard配置前提条件
  7. 将一种文本类型安全的转化为另一种类型
  8. ECLIPSE3.2安装 + 汉化 + 配置SWT DESIGNER6.2.0
  9. 如何解决 “ 段错误(吐核) ” ???
  10. 杭电多校第六场-J-Ridiculous Netizens