在64位windows下使用instsrv.exe和srvany.exe创建windows服务

转载:https://www.iflym.com/index.php/computer-use/201205020001.html

在32位的windows下,包括windows7,windows xp以及windows 2003,都可以使用instsrv.exe和srvany.exe来创建自定义的windows服务。比如,我们有一个bat文件,用于将指定的程序作为服务进行启动,使用一般的工具都不可以进行此类工作,而使用由windows 2003的资源工具包windows toolkit中所带的instsrv就可以。

详细的用法这里就不再具体叙述,简单一点就是使用instsrv将相应的srvany注册成服务,然后在注册表中增加相应的Application和AppDirectory参数,用于srvany启动我们所相应的服务。如下列代码所示://将相应程序生成成服务

1
2
3
4
5
6
7
8
9
set s32=%windir%\system32
%s32%\instsrv.exe %service_name% %s32%\srvany.exe
 
//在注册表中更新相应的参数
echo Windows Registry Editor Version 5.00> %reg_file%
echo >> %reg_file%
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\%service_name%\Parameters] >> %reg_file%
echo "Application"="%prog_path%\\%prog_name%" >> %reg_file%//程序地址
echo "AppDirectory"="%prog_path%" >> %reg_file%//程序目录

以上的代码在所有的32位系统之上都可以正常的运行,包括windows 2000。然而,在64位的windows下,以上的代码却失效了。会报一个以下错误:

Unable to find the file at the given path

在仔细检查了参数之后,确定这是由于系统原因所引起的。

最终的原因在于,我们所使用的instsrv和srvany是32位的,而windows现在没有相对应的64位相对应工具发布。而程序本身是没有问题的,问题在于我们将instsrv和Srvany放到windows/system32正面,而在64位系统中,这里应该存放64位的程序,所以最终的解决问题很简单。我们只需要将这两个程序再copy至32位程序应该放置的地方,比如windows/sysWow64目录,这样就可以了。原先的相应步骤以及程序根本就不需要作任何改动。instsrv会自动地找到原先应该放在system32下的程序,而这个程序现在被放置在了SysWow64目录下。

简单一点的解决方法就是,将instsrv和srvany程序在windows/sysWow64目录下再copy一份,相当于在system32和sysWow64下都有程序,这样问题即解决。更底层的原因,也许只有微软能解释了,简而言之,在64位系统下,32位程序是看不到放置在system32下面的程序的,而它应该访问的system32目录被系统映射到了sysWow64目录下了,在运行时系统会自动地将相应的sysWow64目录映射为程序所认为的system32。
参考文档:http://en.wikipedia.org/wiki/WoW64

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
压缩包包含instsrv.exe srvany.exe两个文件 服务是一种应用程序类型,它在后台运行。要管理系统服务,请运行services.msc,打开“服务”对话窗口,这里可以看到当前系统中的所有服务。双击某一服务,在弹出的“属性”对话框的“常规”选项页中的“服务状态”栏可以看到此服务当前状态。单击“启动类型”下拉菜单,可以将该服务设置为自动启动、手动启动或禁用。     用instsrv.exe程序设置成服务启动   Windows的“服务”工具是不能添加/删除服务的,但可以利用Windows提供的资源工具包中的Instsrv.exeSrvany.exe来实现。其中,Instsrv.exe可以给系统安装和删除服务Srvany.exe可以让程序以服务的方式运行。   ★设置方法   第一步:报户口——注册服务名称   这里就以建立一个名为explorer的服务为例来说明,首先将Instsrv.exeSrvany.exe存放到一个比较方便的地方,建议放到系统安装目录中(笔者的Windows XP安装目录为D:\Windows)。运行cmd.exe,进入“命令提示符”窗口,执行命令:cd d:\Windows,进入系统安装目录。运行命令:   Instsrv explorer d:\Windows\srvany.exe   好了,这条命令的成功运行,已经在系统中注册了一个名叫explorer的服务,快到“服务”中看看一下检验检验吧!   小提示   ★注册服务:instsrv :这里的可任意取名,前面必须带上该文件的绝对路径,如:D:\Windows\srvany.exe。   ★删除服务:instsrv remove   第二步:找关联   要让explorer服务正常运行,还必须在注册表中指定该服务对应的应用程序。运行Regedit.exe,打开“注册表编辑器”,依次展开如下子键:[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services],在该子键下找到并右击explorer(对应前面建立的服务名),选择“新建”下的“项”,将其命名为Parameters。单击选定它,在右侧窗口中新建一个名为Application的字符串值,将其数值数据设置为explorer服务对应的应用程序绝对路径,比如:d:\Windows\gboor.exe。接着再新建两个字符串值:AppDirectory和AppParameters,AppDirectory指定程序所在的目录,AppParameters指明程序运行的参数(注意:可以不用设值),如图1所示,最后关闭注册表编辑器。   接下来打开“服务”窗口,找到刚添加的explorer服务,打开其属性对话框,单击切换到“登录”选项页,在“登录身份”中选中“本地系统账户”,如图2,如果不想让服务在运行的时候弹出状态窗口,请不要勾选“允许服务与桌面交互”复选项,单击“确定”返回。至此,explorer服务已经全部配置好了。   最后,右击该服务,选择“启动”,这样该程序就会启动,而且以后也会在系统启动时自动以服务形式运行!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值