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

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

在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

转载请标明出处:i flym
本文地址:http://www.iflym.com/index.php/computer-use/201205020001.html

时间: 2024-12-18 05:19:04

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

在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中所

windows 64位系统下 apache+php+mysql

环境搭建 第一步: 64位系统下的 apache.php .mysql软件下载 apache2.4 http://www.apachelounge.com/download/win64/ php5.5 http://windows.php.net/qa/ PHP 5.5 (5.5.17RC1) 就这个版本 mysql http://www.mysql.com/downloads/mysql/ MySQL Community Server 5.6.20 这个是安装版当然你下载zip包的也可以 第二

关于32位程序在64位系统下运行中需要注意的重定向问题(有图,很清楚)

0x00 前言 最近学习了[email protected]的文章<Persistence Architecture Matters>,恰巧解决了我之前遇到过的一个问题,理清了文件和注册表重定向中需要注意的细节 大家在学习的过程中难免也会碰到,所以在此分享一下. <Persistence Architecture Matters>的链接:https://labs.mwrinfosecurity.com/blog/persistence-architecture-matters/ 0

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

下载dosbox,并解压安装 下载地址: http://pan.baidu.com/s/1eRJbJAq 默认安装到C:\Program Files (x86)\DOSBox-0.74 安装成功后,双击该目录下DOSBox 0.74 Options.bat文件,弹出配置选项文本文档, 找到[autoexec]选项,在下面添加如下字段: MOUNT C D:\masmpro set PATH=$PATH$;D:\masmpro D:\masmpro是我创建的汇编程序目录,这样每次启动dosbox,

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

网上关于Retional rose 2003安装和破解的文章比较多,这里,我结合自己的亲身体验,和大家分享一下win7 旗舰版 64位系统下Retional rose 2003(下面简称rose2003)的安装和破解过程.本文中rose2003的安装路径为C:\Program Files (x86)\Rational,下文按照该路径介绍.     rose2003的下载地址:http://www.oyksoft.com/soft/1880.html    破解压缩包的下载地址:http://fi

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

前言 因为一次偶然的机会,需要访问系统目录“C:/Windows/System32“文件夹下的内容,使用的测试机器上预装了win7 64系统.在程序运行中竟然发生了该文件路径不存在的问题!!通过查看网上相关的资料,了解到64位系统下,System32(同时也包括Program Files)这两个文件夹被动态地重定向了.为了可以直观的反映这个问题,这里将编写一个小的测试程序进行验证. 实例验证 首先随机选择一个文件,并将其拷贝到系统目录的System32文件夹下.本文选择QQ启动程序进行验证(主要

Win7 64位系统下 Retional rose 2003 安装及破解

http://xiaor.iteye.com/blog/1665563 Win7 64位系统下 Retional rose 2003 安装及破解 博客分类: UML 网上关于Retional rose 2003安装和破解的文章比较多,这里,我结合自己的亲身体验,和大家分享一下win7 旗舰版 64位系统下Retional rose 2003(下面简称rose2003)的安装和破解过程.本文中rose2003的安装路径为C:\Program Files (x86)\Rational,下文按照该路径

win2003 64位系统下ODBC连接使用

环境 一般系统部署的服务器若是windows系统,就会采用64位win2003的结构.可是我们编写的程序绝大多数都是在x86下32位cpu架构中编译的,要正常移植到64位机器还真的是很麻烦,不仅要求应用程序是64位模式编译,还需要数据库也得是64位,iis64位,framework64位,好在相应的厂商都提供这些支持组件.不知道有人遇到过像我这样的问题么,应用中有需要增加一个Access数据库导入功能,这就需要连接ODBC的mdb驱动,可是Microsoft OLE DB Provider fo

C# 32位程序在64位系统下注册表操作

在64位的Windows操作系统中,为了兼容32位程序的运行,64位的Windows操作系统采用重定向机制.目的是为了能让32位程序在64位的操作系统不仅能操作关键文件文夹和关键的注册表并且又要避免与64位程序冲突 相关资料请查看32位程序在64位系统下运行的重定向机制 下面是以获取操作系统安装密匙KEY的案例: using System; using System.Collections.Generic; using System.Linq; using System.Text; using