Password String,服务启动的口令,如果使用缺省得账号,就没有必要设定服务启动的帐号。 ServiceName String,服务名,如果使用net.exe来控制服务,net.exe的指定那一个服务的参数就是此属性中的字符串。 StartMode 枚举型,具体为: vcStartAutomatic 2 服务可以自己启动 svcStartManual 3 服务手动启动 svcStartDisabled 4 服务不能自启动 另外有一个Debug属性,不做讨论。 我们要将一个VB程序当作一个NT服务,必须向系统作一些“申请”,而相应的工作VB是无法很好的完成的。所以,NTSVC.ocx提供了相应的方法留作我们想系统传递相关信息。 Install ,将当前Vb程序安装成NT服务,在此之前,您必须至少设置DisplayName, ServiceName, ControlsAccepted以及StartMode等属性。除此之外您可能还要设置Account、Password、LoadOrderGroup、Dependencies等。这些信息的设置正确与否,决定您的服务程序能否正常启动运行。 Uninstall, 将当前NTSVC.ocx指定的服务从系统注册表中删除。NT服务取决于系统服务注册表的设定,这是一个众所周知的秘密。 StartService,将指定的服务启动,如果该服务注册了。 StopService,停止服务,如果服务正在运行。 LogEvent ,记录服务事件。服务运行中,可能发生错误以及意料不到的事件,这些可以通过此方法记录下来,供管理员通过“事件察看器”察看相关的信息,以最优化服务。此方法有三个参数event, id, message. Event指发生的事件类型,可以设为以下值: svcEventError 1 错误事件 svcEventWarning 2 警告事件. svcEventInformation 4 提供参考信息. svcEventAuditSuccess 8 审计成功. svcEventAuditFailure 10 审计失败 除了以上方法,可能用户还需要读写注册表,此控件还提供了注册表的访问方法: DeleteSetting (section[, key]) GetAllSettings(section) GetSetting(section, key[, default]) SaveSetting(section, key, setting).
三、编写服务 了解以上内容,下面我们开始来设计一个服务,通过例子,让大家理解如何在VB中编写服务. 在此之前,我们决定写一个什么样的服务。我参考C++Build中的一个例子,写一个不断报警的服务进程。该进程启动后在后台不断间隔5秒发出Beep叫,这可以让大家更深切知道此服务的存在,虽然有些令人讨厌。服务的名字为VBBeepSVC,在SCM中显示为The VB NT SVC View。 跟着我一起来吧! 1、创建工程,设定相关使用到的控件。 所有的Vb的控件必须有一个Form作为载体,所以,首先我们创建一个标准工程,选择菜单project—>Components…,然后选取(Microsoft NT Service Control),会在Toolbar中出现NT服务控件。再拖一个Timer控件到Form上。然后保存一下。基本上,创建过程完成。 2、设定控件属性。 选中NtSvc.ocx实例,在属性栏中设定:DisplayName: The VB NT SVC View,ServiceName: VBBeepSVC,StartMode:3(手动启动服务).其他的就缺省吧。 由于我们希望每个5秒就beep一次,所以我们必须依靠一种定时机制来实现,所以我们将timer的Interval设定位5000毫秒。 |