本文转自: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下,以上的代码却失效了。会报一个以下错误:

1
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

在64位windows下使用instsrv.exe和srvany.exe创建windows服务[转]的更多相关文章

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

    在64位windows下使用instsrv.exe和srvany.exe创建windows服务   在32位的windows下,包括windows7,windows xp以及windows 2003, ...

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

    本文转自:https://www.iflym.com/index.php/computer-use/201205020001.html 在32位的windows下,包括windows7,windows ...

  3. windows(64位)下使用curl安装

    windows(64位)下使用curl安装 转自:https://blog.csdn.net/wkj001/article/details/54889907 2017年02月06日 09:46:47  ...

  4. 【VS开发】【miscellaneous】windows(64位)下使用curl命令

    windows(64位)下使用curl命令 Curl命令可以通过命令行的方式,执行Http请求.在Elasticsearch中有使用的场景,因此这里研究下如何在windows下执行curl命令. 工具 ...

  5. 64位Win7下运行ASP+Access网站的方法

    64位Win7下运行ASP+Access网站的方法 近日系统升级为WIN7 64位之后,突然发现原本运行正常的ASP+ACCESS网站无法正常连接数据库. 网上搜索多次,终于解决了问题,总结了几条经验 ...

  6. 64位系统下System32文件系统重定向

    前言 因为一次偶然的机会,需要访问系统目录“C:/Windows/System32“文件夹下的内容,使用的测试机器上预装了win7 64系统.在程序运行中竟然发生了该文件路径不存在的问题!!通过查看网 ...

  7. 64位 windows10下 Apache2.4 + php7 + phpstorm 相关设置

    64位 windows10下 Apache2.4 + php7 + phpstorm 相关设置   转  https://blog.csdn.net/laurencechan/article/deta ...

  8. (转)Win7 64位系统下 Retional rose 2003 安装及破解

    网上关于Retional rose 2003安装和破解的文章比较多,这里,我结合自己的亲身体验,和大家分享一下win7 旗舰版 64位系统下Retional rose 2003(下面简称rose200 ...

  9. win7 64位环境下配置汇编环境和程序设计

    下载dosbox,并解压安装 下载地址: http://pan.baidu.com/s/1eRJbJAq 默认安装到C:\Program Files (x86)\DOSBox-0.74 安装成功后,双 ...

随机推荐

  1. google垂直搜索结果

    佰年金融 所谓“垂直”很干净地分离出来,而不是在谷歌算作有机列表的结果,但该行已开始模糊.例如,现在许多视频结果似乎是直接整合为有机(万SERP的例子).我治疗的新的“有深度的文章”作为一个垂直的结果 ...

  2. android_demo之自动生成动态表格

    今天我们学习了如何更好的利用Android 的 layout 布局. 接下来是个简单的栗子去了解这个自动生成的动态的控件(自动生成表格) 这是我们的layout 页面 <?xml version ...

  3. [Docker] docker 基础学习笔记2(共6篇)

    febootstrap 是一个自制image的一个第三方的工具,好像他们现在都要用这个.   安装还是挺方便的. yum -y install febootstrap   febootstrap -i ...

  4. [知识整理]Java集合(一) - List

    一.实现List的几个类: ArrayList.LinkedList.CopyOnWriteArrayList.Vector 二.几个List底层的数据结构: ArrayList - 数组列表 Lin ...

  5. aspx页面,中文乱码解决方案

    由于文件编码方式编码方式不统一出现样式中文乱码解决方案: 今天碰到的问题:页面字体样式设置的'微软雅黑',可页面没引用.我调试看到样式出现中文乱码了 这种问题,就需要转换文件的编码方式,如下两步即可解 ...

  6. js-我理解的闭包

    一:什么是闭包 <JS高级程序设计>指出:闭包是指有有权访问另一个函数作用域中变量的函数. 二:闭包的使用 闭包的常见的创建方式是 子函数嵌套在父函数的内部,这样,子函数就可以访问父函数中 ...

  7. [题解]vijos & codevs 能量项链

    a { text-decoration: none; font-family: "comic sans ms" } .math { color: gray; font-family ...

  8. des加密解密——java加密,php解密

    最近在做项目中,遇到des加密解密的问题. 场景是安卓app端用des加密,php这边需要解密.之前没有接触过des这种加密解密算法,但想着肯定会有demo.因此百度,搜了代码来用.网上代码也是鱼龙混 ...

  9. Gevent协程

    协程 协程,又称微线程,纤程.英文名Coroutine.一句话说明什么是线程:协程是一种用户态的轻量级线程. 协程拥有自己的寄存器上下文和栈.协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来 ...

  10. Smali语法编程

    Smali背景: Smali,Baksmali分别是指安卓系统里的Java虚拟机(Dalvik)所使用的一种.dex格式文件的汇编器,反汇编器.其语法是一种宽松式的Jasmin/dedexer语法,而 ...