用C#写了一个控制台程序,如何让它作为服务来运行

用C#写了一个控制台程序,如何让它作为服务来运行,第1张

要把应用程序添加为服务,你需要两个小软件:Instsrv.exe和Srvany.exe。Instsrv.exe可以给系统安装和删除服务,Srvany.exe可以让程序以服务的方式运行。这两个软件都包含在Windows NT Resource Kit里。把这两个程序保存在一个方便的位置,例如C盘根目录下。我们举例来说明,把OE作为一个服务添加进Windows XP Professional *** 作系统中,并把这个服务命名为“Mail”。在运行中输入“CMD”,回车,打开命令行窗口,在提示符后面直接输入:“c:\instsrv.exe Mail c:\srvany.exe”然后回车,其中的“c:\instsrv.exe”和“c:\srvany.exe”表示这两个程序保存的位置,而Mail则是你想添加的服务名称。运行Regedit打开注册表编辑器,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services下,找到刚才添加的Mail,点击右键,新建一个键,命名为“Parameters”,点击新建的Parameters,并再次新建一个名称为“Application”的子键,数据类型为“REG_SZ”,数值为希望作为服务运行的程序的所在位置,如果你的Windows系统安装在C盘下,那么OE的程序位置就是C:\Program Files\Outlook Express\msimn.exe ,把这个路径添入数值中。到现在,这个服务已经成功的添加并且设置好了。如果你希望做的更加专业,可以在Mail服务下建立一个名为Description的子键,数据类型同样为REG_SZ,数值可以写一些你对这个服务的描述,这个我们在后面可以看到。接下来需要对服务做一些额外的设置,在运行中输入“Services.msc”并回车,在列表中找到我们刚添加的Mail服务,双击打开,来做详细的设置。在“General”选项卡上,我们需要设置这个服务的运行方式,可以看见,作为一个服务,有“自动(Automatic)”,“手动(Manual)”和“禁止(Disabled)”三种启动类型,按照需要,我们一般设置成自动就可以了。而在“Logon”选项卡下可以设置以什么身份运行这个服务,一般可以不用理会,按照默认的设置。“Recovery”选项卡下则是进行恢复设置的,你可以指定,在服务第一次,第二次和第三次出错之后分别采取什么措施。“Dependencies”则显示了服务之间的依存关系,可以让你察看这个服务的运行依赖哪些其它服务,以及还有什么服务依赖于这个服务。这后面几个对我们一般用户没有什么意义。经过这些设置,你的服务已经完全可以正常工作了。注销一下看看。为了让你看清除,我们先打开OE,这时在任务管理器里,有两个msimn进程,用户名为“.com.cn”的是我们打开的OE,而用户名为“SYSTEM”的就是我们添加的服务。如果你玩够了,不想再运行这个服务,可以直接禁止它在启动的时候运行,或者使用Instsrv.exe程序删除。方法是在命令行下输入“c:\instsrv.exe Mail remove”,然后回车就可以了。需要注意的是Instsrv.exe这个程序也可以删除某些系统服务,所以使用的时候一定要小心,对于系统服务,安全起见千万不要删除,哪怕你觉得它对你没有用。

所以打算给他解决这个问题,方式就是手动添加一个SQL SERVER服务并自动启动。 方法一:利用导出注册表方式添加服务WINDOWS系统的服务主要体现在注册表中,其位置在【HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services】,正好我系统中有SQL SERVER以服务启动,所以可以直接导出SQL SERVER服务的注册表项【HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/MSSQLSERVER】为.reg文件,然后导入到对方的系统中,并在对方系统的注册表中找到这个新增的项,把其中涉及到路径的地方修改为正确的路径即可(ImagePath键值)。至于其他的什么随机启动可以在系统的服务中修改。修改完成以后重启系统,这一步很重要!!!否则你在services.msc的服务中看不到这个新增的服务,也无法启动。原因是服务管理器里显示的内容是内存中的内容,这些内容是系统启动的时候遍历注册表预读到系统中的。重启以后,一切都OK了。 方法二:利用命令sc create方式添加服务sc命令是WINDOWS中用来管理服务器的一个命令,sc create是其子项,用来创建服务,利用sc create /?命令可以查看起帮助,如下:DESCRIPTION:Creates a service entry in the registry and Service Database.USAGE:sc <server>create [service name] [binPath= ] <option1><option2>...OPTIONS:NOTE: The option name includes the equal sign.type= <own|share|interact|kernel|filesys|rec>(default = own)start= <boot|system|auto|demand|disabled>(default = demand)error= <normal|severe|critical|ignore>(default = normal)binPath= <BinaryPathName>group= <LoadOrderGroup>tag= <yes|no>depend= <Dependencies(separated by / (forward slash))>obj= <AccountName|ObjectName>(default = LocalSystem)password= <password>OK,现在根据帮助来拼装命令就可以了,如我仿照我的MSSQL SERVER拼装的命令是:sc create MSSQLSERVER binPath= "C:/program files/mssql/sqlservr.exe" TYPE= "own" start= "auto" TAG= "no" DisplayName= "MSSQLSERVER SERVICES" 拼装好以后在对方的命令行下执行命令就可以了,如果结果返回为sc create的帮助,说明命令中有错误的地方,仔细检查一下参数的名称和空格等。执行成功以后你可以用sc query 来查看这个服务。也可以用sc description来修改服务的描述。如果你不能远程 *** 作对方电脑,你可以把所有要执行的命令写成一个.bat文件传给对方执行。 这条命令是即时生效,会更新内存和注册表,所以你在服务管理(services.msc)下可以直接看到,也不用重启系统! 特别注意:参数[binPath= ]等号后面有空格!!其他参数也一样,赋值最好用引号括起来,避免路径中有空格存在!! PS:如何查看系统中有哪些服务?方法1:在【开始菜单】下的【运行】中输入命令services.msc。方法2:键盘windows键+R直接调出【运行】窗口,输入命令services.msc。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11828857.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存