如何在Windows *** 作系统的管理工具->服务中添加一项服务呢?

如何在Windows *** 作系统的管理工具->服务中添加一项服务呢?,第1张

系统服务跟以下的注册表几个项目相关:

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices

HKEY_LOCAL_MACHINESYSTEMControlSet001Services

HKEY_LOCAL_MACHINESYSTEMControlSet002Services

在以上任何注册表列中添加一个新项:

名字是你想要添加系统服务的名字,比如Backdoor。

在BACKDOOR项下新建一个字符串,数值名称Displayname 数值数据为要添加服务的

名称Backdoor。

下面列出一个表,会直观一些:

名称 类型数据 备注

DisplaynameREG_SZ 想要添加服务的名称 想要添加服务的名称

Description REG_SZ服务的描述 服务的描述

ImagePath REG EXPAND SZ 程序的路径

Start REG_DWORD 0,2,3,4 2代表自动启动,3代表手动启动服务.4代表禁用服务,0代表系统对底层设备驱动(一般不需要这个)

ErrorControlREG_DWORD 1

Type REG_DWORD 10 or 20 一般应用程序都是10,其他的对应20

ObjectName REG_SZ LocalSystem 显示本地登陆

注意:在XP/2003下可以完全手工来添加REG EXPAND SZ类型。在XP/2003下直接修改ImagePath 键值就可以了。但是在WIN2000下却不可以。

现在添加系统服务的工具很多,最典型的就是netservice,另外有两个小软件: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”则显示了服务之间的依存关系,可以让你察看这个服务的运行依赖哪些其它服务,以及还有什么服务依赖于这个服务。这后面几个对我们一般用户没有什么意义。经过这些设置,你的服务已经完全可以正常工作了。注销一下看看。

如果你不想再运行这个服务,可以直接禁止它在启动的时候运行,或者使用Instsrv.exe程序删除。方法是在命令行下输入“c:\instsrv.exe Mail remove”,然后回车就可以了。需要注意的是Instsrv.exe这个程序也可以删除某些系统服务,所以使用的时候一定要小心,对于系统服务,安全起见千万不要删除,哪怕你觉得它对你没有用。

安装Winfows服务首先要添加安装程序,添加安装程序步骤如下:

1、将Windows服务程序切换到设计视图, 右击设计视图选择“添加安装程序”

2、切换到刚被添加的ProjectInstaller的设计视图

一般设置如下:

设置serviceInstaller1组件的属性:

1) ServiceName = 服务名称

2) StartType = Automatic ,即自动

设置serviceProcessInstaller1组件的属性

1) Account = LocalSystem,账户一般设置为本地系统

3、生成解决方案

安装服务:

方法一、使用DOS命令安装window服务

1、在服务所在的文件夹下的bin\debug文件夹下找到.exe文件(例如WindowsService1.exe)

将此文件拷贝到你想安装的文件夹中。

2、进入DOS界面

(VS2008-->Visual Studio Tools-->Visual Studio 2008 命令提示)来进入DOS,直接用cmd可能有些命令找不到;

3、输入

方法二、使用安装项目安装windows服务

个人比较推荐这个方法,选择目录安装更灵活,而且不用在DOS环境下运行。

因为本人比较懒,直接给出别人总结的地址

注意,以后每次服务项目有更改的时候,需要编译服务后,在安装项目中刷新依赖项!!!

方法三、

在ProjectInstaller.cs的后台代码中添加安装服务和卸载服务的代码

/// <summary>

/// 安装服务

/// </summary>

/// <param name="stateSaver"></param>

public override void Install(System.Collections.IDictionary stateSaver)

{

Microsoft.Win32.RegistryKey system,

//HKEY_LOCAL_MACHINE\Services\CurrentControlSet

currentControlSet,

//...\Services

services,

//...\<Service Name>

service,

//...\Parameters - this is where you can put service-specific configuration

config

try

{

//Let the project installer do its job

base.Install(stateSaver)

//Open the HKEY_LOCAL_MACHINE\SYSTEM key

system = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("System")

//Open CurrentControlSet

currentControlSet = system.OpenSubKey("CurrentControlSet")

//Go to the services key

services = currentControlSet.OpenSubKey("Services")

//Open the key for your service, and allow writing

service = services.OpenSubKey(conServiceName, true)

//Add your service's description as a REG_SZ value named "Description"

service.SetValue("Description", "描述语言")

//(Optional) Add some custom information your service will use...

config = service.CreateSubKey("Parameters")

}

catch (Exception e)

{

Console.WriteLine("An exception was thrown during service installation:\n" + e.ToString())

}

}

/// <summary>

/// 卸载服务

/// </summary>

/// <param name="savedState"></param>

public override void Uninstall(System.Collections.IDictionary savedState)

{

Microsoft.Win32.RegistryKey system,

currentControlSet,

services,

service

try

{

//Drill down to the service key and open it with write permission

system = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("System")

currentControlSet = system.OpenSubKey("CurrentControlSet")

services = currentControlSet.OpenSubKey("Services")

service = services.OpenSubKey(conServiceName, true)

//Delete any keys you created during installation (or that your service created)

service.DeleteSubKeyTree("Parameters")

//...

}

catch (Exception e)

{

Console.WriteLine("Exception encountered while uninstalling service:\n" + e.ToString())

}

finally

{

//Let the project installer do its job

base.Uninstall(savedState)

}

}

代码添加完成后

添加window service安装的批处理命令

1)在项目添加一个文本文件,更名为install.bat,编辑文件的内容如下:

@echo off

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe -i "WindowsService1.exe"

@pause

2)在项目添加一个文本文件,更名为uninstall.bat,编辑文件的内容如下

@echo off

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe -u "WindowsService1.exe"

@pause

说明:上面绿色字体为服务名称

编译完成后将debug的文件拷贝到想安装的目录下,点击install.bat即完成安装。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存