说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

运用Delphi编写Windows NT中服务程序

HTML文档下载 WORD文档下载 PDF文档下载
运用Delphi编写Windows NT中服务程序

---- Windows NT服务程序不同于一般的运行程序,它不需要NT登录进去,只需要开机进入NT系统便可以运行,一般用于系统服务方面的应用,学会编写NT服务程序对网络管理人员而言是非常重要的,Delphi4.0作为一种高效、快速、强大的开发语言,为开发NT服务程序提供了非常便捷的方法,加上其可视化界面以及与数据库的完美结合,使我们开发与数据库有关的NT服务程序变得非常简单,下面以编写一个NT定期备份程序为例,介绍如何运用Delphi编写Windows NT的服务程序。

---- 打开Delphi编辑器,选择菜单中的File|New,在New Item中选择Service Application项,Delphi便自动为你建立一个基于TServiceApplication的新工程,TserviceApplication是一个封装NT服务程序的类,它包含一个Tservice1对象以及服务程序的装卸、注册、取消方法。

---- 将Tservice1对象的属性做下列更改:

DisplayName与Name改为:DataBackup,

ServiceStartName属性改为系统管理员

用户(如DOMAIN\Administrator)和Password则输入用户密码

---- 这样,服务程序运行时将自己以该用户的权限操作NT。

---- 这样,一个NT服务程序编写已经完成,在Delphi编辑器中选择菜单Run|Parameters,在Parameters中输入/install,程序编译运行后,一个名为DataBackup的NT服务程序已经安装好,你可以双击控制面板中的服务项目,将会看到此服务程序,只是此服务程序没有任何东西而已;在Delphi编辑器中选择菜单Run|Parameters,在Parameters中输入/uninstall,程序编译运行后,系统将会将此服务程序卸掉。

---- 服务程序是通过控制一个线程的生成、暂停、继续、停止来达到服务目的的,因此我们必须加入一个Tsession对象来编写文件自动备份代码,在Delphi编辑器中选择菜单中的File|New,在New Item中选择Thread Object项,Delphi会提示你为该Tsession对象输入一个名称(输入DataCopy)

Delphi便生成了一个基于Tsession的DataCopy对象,并提供了一个Execute过程供重载,我们要Execute过程中输入以下程序:

var

Hour

Min

Sec

MSec: Word;

TimeStamp

DirectoryEdit1

DirectoryEdit2:String;

SearchRec: TSearchRec;

Source

Temp

Dest:Pchar;

F

F1:THandle;

FF

FF1:WIN32_FIND_DATA;

Begin

{每次文件备份执行时间}

TimeStamp:='12:00';

{文件备份源目录}

DirectoryEdit1:='C:\temp';

{文件备份目录}

DirectoryEdit2:='C:\temp1';

while True do

begin

DecodeTime(Time

Hour

Min

Sec

MSec);

IF Trim(TimeStamp)=Format

('%-2.2d:%-2.2d'

[Hour

Min]) then

begin

GetMem(Source

250);

GetMem(Dest

250);

GetMem(Temp

250);

StrPcopy(Dest

DirectoryEdit2+'\

'+FormatDateTime('YYYYMMDD'

Date));

CreateDirectory(Dest

nil);

IFFindFirst(DirectoryEdit1+'\*.*'

faAnyFile

SearchRec)=0 then

begin

repeat

StrPcopy(Source

DirectoryEdit1+'\'+SearchRec.Name);

StrPcopy(Dest

DirectoryEdit2+'\'

+FormatDateTime('YYYYMMDD'

Date)+'\'+SearchRec.Name);

copyfile(Source

Dest

False);

until FindNext(SearchRec)< >0;

end;

SysUtils.FindClose(SearchRec);

FindClose(F);

FreeMem(Source

250);

FreeMem(Dest

250);

FreeMem(Temp

250);

end;

sleep(60000);

end;

end;

---- 此线程执行时每隔一分钟将检查一次时间,看是否到了备份时间,如果是则将DirectoryEdit1中的所有文件拷到DirectoryEdit2目录中去。

---- 现在编写服务控制DataCopy线程的代码,在TdataBackup对象中的OnStart、OnStop、OnPause、OnContinue事件中分别输入如下代码:

procedure TDataBackup.DataBackupStart

(Sender: TService;

var Started: Boolean);

begin

DataThread:= TDataCopy.Create(False);

Started := True;

end;

procedure TDataBackup.DataBackupStop

(Sender: TService;

var Stopped: Boolean);

begin

DataThread.Terminate;

Stopped := True;

end;

procedure TDataBackup.DataBackupPause

(Sender: TService;

var Paused: Boolean);

begin

DataThread.Suspend;

Paused := True;

end;

procedure TDataBackup.DataBackupContinue

(Sender: TService;

var Continued: Boolean);

begin

DataThread.Resume;

Continued := True;

end;

---- 这样一个文件自动备份程序已经完成,编译好后,加上/install参数执行程序,系统会将此服务程序安装,由于服务程序中StartType属性为stAuto,NT每次启动时,此程序自动执行,你可以在控制面板中的服务项目来启动、暂停、恢复、停止它,也可以加上/uninstall参数执行程序来卸掉它。通过上述例子我们可以看到,用Delphi编写NT服务器程序十分方便,而且你也可以在Tservice对象上加许多非可视化控件来与数据库关联,实现很多复杂的功能。

传苹果为iWatch招兵买马 以确保明年发布新产品 降价高达1200元的Surface RT,并不值得你购买 Daux.io:开源的项目文档生成器 避免代码注释的五大理由 安徽农信:30人,13轮测试,完成日均270万笔交易的综合业务系统架构调整 研究员带来5D光存储技术:容量达360TB,寿命高于百万年 LSI闪存加速或助力互联网IDC自我设计与建设 怎样让用户从100涨到200万?硅谷创业教父如是说 大作修炼之道:就算是手游,也要搞点剧情吧! Java EE 8愿望清单:缺少这些,Java EE将不会完美 Surface Watch?传微软正测试搭载Win 8的智能手表 又一美国造?联想在美设厂制造产品 软件定义未来 2013 SDCC中国软件开发者大会全面开启 可以直接拿来用的15个jQuery代码片段 程序员最害怕的5件事 你中招了吗? 机器智商已达四岁:亲,是时候考虑你的饭碗了 读60行代码完成的NoSQL数据库,看数据库打造面临的挑战 聚焦全球移动市场:韩国,开放之后是春天? Github 终于开始认真考虑开源项目许可证了 雅虎发布今年第二季度财报 总营收为11.35亿美元 既然无法避免被GAE锁定,何不考虑其中的机遇并自力更生 19亿美金背后的分析:91为什么要卖?百度为什么要买? 直接拿来用!最火的iOS开源项目(三) 让代码飞一会儿,超级有用的CSS编码工具集 创业者如何在Demo演讲上打动投资人? 微软小打小闹的移动版Outlook Web App,会不会被用户抛弃? 哪门编程语言影响力最大? 微软启动“Companion Web”计划 可互连多屏幕设备 让你望而却步的密码管理服务已获得100万美元的种子基金 SDCC 2013开始公开征集讲师和演讲主题 不用图片和JS,照样创建绚丽的动态CSS3菜单 如何用WIN98引导盘恢复系统的引导!!!! 一个老问题 ?ACCESS2000的数据库有几行坏了,无法用ACCESS修复/无法删除,一读到该行ACCESS就直接退出,怎么办? 各位,感觉学数学难不难? 壹?ACCESS2000的数据库有几行坏了,无法用ACCESS修复/无法删除,一读到该行ACCESS就直接退出,怎么办? 号外:今天终于卖了侯捷的Inside The C++ Object Model ,休息时可以翻番,为了祝贺特灌水100 谁能给我连 接sql2000数据库数据原的原代码===火急!!! 高手帮忙,如何让我能用jbuilder5? 请问用Perl编写用户交互程序 请问各位大哥,上海的高程考试在哪里报名啊? dcom 服务器关闭时怎能捕捉异常 三戒,有请~~~ 谁知道websphere的试用版怎么做掉? 打印DataReport时怎样用API改变系统的纸型,急急急急急急急急急!!!! 新来的~~来报到了~~只能送20分~~希望大家不嫌弃~~ 请成功使用JBuilder5的朋友指教!! 激情放送 五位QQ号,100块,你会要吗? 555~~~~挂了PASCAL挂了,5555~~~~我学不好DELPHI 了5555谁帮我呀!!! 有编过游戏修改器的高手吗? jinesc领分~~~ 如何使UpDown每次增加或减少0.5? 有个问题很困惑,请教 上傳后,服務器端如何接收? 各位高手好!现在有谁是正在使用 LINUX 上网的.报一下好吗!!!!!! 我快神经了,求救 各位高手好!现在有谁是正在使用 LINUX 上网的.报一下好吗!!!!!!!! 别笑我傻,又有简单问题 各位高手好!现在有谁是正在使用 LINUX 上网的.报一下好吗!!!!!!! 各位高手好!现在有谁是正在使用 LINUX 上网的.报一下好吗!!!!!!!!!!!! 各位高手好!现在有谁是正在使用 LINUX 上网的.报一下好吗!!!!!!!!! 大家都谈谈建立什么样的目录结构能更好的管理硬盘里的东东 lilo 如何设置??请赐教!! 各位高手好!现在有谁是正在使用 LINUX 上网的.报一下好吗!!!!!!!!!!!1 mts是什么? mts是什么?? 学习汇编要什么基础,要看什么样的书,有没有好的汇编的电子参考书下载呢? 腾讯的qq怎么不好用了? 有CCNA,Scjp2,高程的计算机本科生能卖多少?(答者有分,只能给33分,没办法) word的表格问题 如果开另外一个线程来进行注册码检验,是否比较难CRACK? 请问高程考试考试的难度 怎么让程序启动的时候接受参数? mts是什么??? 我也调查:这里有多少冠名以“独孤”的,为何独孤???? 菜鸟SOS 个人论:编写程序方法论(原作者,huangbeyond) 向流版主学习,戒网!戒网!成天在网上瞎转,不如下去加强学习,碰到问题再上网寻求答案,天天在网上泡得久了,看到各大PB网站的编程技巧都有些视而不见了.....到PB论坛很多人都象到自己喜爱的聊天室了,到论坛好象就是来聊天一样.....戒网!戒网! 如何编写一个集成Ms Word的控件,能够处理WEB上的文件排版 怎么不能下载呢? 我是女孩,有人信吗??嘻嘻~~ 他们打算在那呆几天用英语怎么说 我们经常在一起玩用英语怎么说 英语翻译像四川九寨沟,张家界,安徽黄山,桂林山水,等等 (我的女孩)求翻译英语, "我们经常在一起"用英语怎么说? "周末去旅游好吗?"的英文翻译是什么? “虽然我做不了第一个” 用英语咋说有好评 亲爱的我们永远在一起好吗?用英语怎么说 英语翻译 翻译下就行 我看看大意3. Results and discussions3.1. Extraction kineticsThe characteristics of the bed and the particles were: particle average diameter of 3.9×10−4 m, true particles density of 1524 kg/m3, apparent bed de 求翻译~第一个必好评!七年级英语! 我要我们永远在一起 帮我翻译 我要我们永远在一起单独的永远在一起 英文是什么 我们用了一周的时间在桂林欣赏了美丽的风景英文翻译 你在那里,请问英语怎么读. 我们永远在一起 用英语怎么说 我喜欢那美丽的风景!用英语怎么说? 你在那里干什么用英文怎么说 我们永远在一起”,用英语怎么说呀] 我们用一周的时间在桂林欣赏了美丽的风景英文翻译 你在那里用英语怎么讲 让我们在一起用英语怎么说 我将站在巴黎铁塔的最高层去欣赏巴黎美丽的风景 用英语翻译不要拿机器翻译 问:你在那里读书?英语怎么说 不知道以后我们会不会在一起用英语怎么说? 英语翻译希望哪位达人帮我翻译.事后会追加分值.摘要:发展旅游电子商务不仅是中国旅游业自身发展需要,也是信息时代中国旅游业面临国际旅游业竞争的必需.通过分析中泰旅游电子商务发 帽子的英语怎么读, 英语翻译求英语翻译成在线等1.仅以此画表示我的愤怒 英语翻译我觉得,最理想的度假地一定是一个美丽的海滨城市,那里要有充足的阳光,柔软的沙滩和多姿多彩的海滩派对.还要有很多美女帅哥,数不清的椰子树以及一整天都放不完的动听音乐.我 学霸用英文怎么读,学渣呢? 英语翻译 现在他们正在看一张他们教室的画. 旅游新热点 用个英文翻译 昆虫英语怎么读?给好评 自己画的画 英文翻译 最热门的旅游景点在哪里?风景旅游景点最多旅游人数是哪里? 生物用英语怎么读, 你喜欢哪一类型的画?求英语翻译 上海热门旅游景点有哪些? 香港是特别行政区用英语怎么说 英语翻译:你明天和他一起来上海吗? 英语翻译“你越轻视我,我越要游得快”.关键是“越---越---”句式 他去香港了 英语怎么说急用!写了! 英语翻译亲们,最近想跳槽到一家鞋企,人家要英文简历.我现在想知道报价员的英文该怎样翻译的.如果您是这行的就更好,希望能得到您的指点, 求“去上海一定要去东方明珠电视塔游玩”的英文翻译,关键词include 这周去香港 英语怎么说 英语翻译想翻译好报价单上交,该去哪里翻译啊 你给了我一次愉快地旅行 英文翻译 香港用英语怎么说 英语翻译注意:请用人脑翻译 帮忙用英语翻译一句话 “一次遥远的旅行” 我希望再去一次那里用英语怎么说?用 过去时态 说啊. 英语翻译是以What's —— —— —— this computer 英语翻译我相信你在中国将会有一个美好的旅行! 你到中国来已经多久了?英语怎么说你第一次什么时候来中国的? "和某人在一起"用英语怎么说? 初一英语翻译:价格合理 你来中国多少年了 用英语怎么说 "与某人在一起"用英语怎么说?^-^ 旅游景点英文翻译 你打算在大连呆多久.用英语怎么说还有:你来大连多久了? 没有人愿意和他呆在一起用英语怎么说? 英语翻译先是关于九寨沟滴1.五花海2.五彩池3.我们路过了许多景点.(注意哈,过去时)4.熊猫海5.诺日朗瀑布6.树正寨还有一句:从山脚爬到山顶一共有3800米,但我和爸爸还是坚持爬了上去,
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn