
Delphi 编写系统服务总结
文章平均质量分 72
Bear_hx
这个作者很懒,什么都没留下…
展开
-
Delphi编写系统服务一:如何编写一个系统服务
打开Delphi编辑器,选择菜单中的File|New|Other...,在New Item中选择Service Application项,Delphi便自动为你建立一个基于TServiceApplication的新工程,TserviceApplication是一个封装NT服务程序的类,它包含一个TService1对象以及服务程序的装卸、注册、取消方法。TService属性介绍:AllowPaus原创 2008-11-28 16:52:00 · 2610 阅读 · 0 评论 -
Delphi编写系统服务二:系统服务和桌面程序的区别
Windows 2000/XP/2003等支持一种叫做“系统服务程序”的进程,系统服务和桌面程序的区别是:系统服务不用登陆系统即可运行;系统服务是运行在System Idle Process/System/smss/winlogon/services下的,而桌面程序是运行在Explorer下的;系统服务拥有更高的权限,系统服务拥有Sytem的权限,而桌面程序只有Administrator权限;在原创 2008-11-28 16:55:00 · 3281 阅读 · 1 评论 -
Delphi编写系统服务三:编写两栖系统服务
采用下面的方法,可以实现一个两栖系统服务(既系统服务和桌面程序的两种模式)工程代码:program FleetReportSvr;uses SvcMgr, Forms, SysUtils, Windows, SvrMain in SvrMain.pas {FleetReportService: TService}, AppMain in AppMain.pas {FmFl原创 2008-11-28 16:59:00 · 2945 阅读 · 0 评论 -
Delphi编写系统服务五:在系统服务和桌面程序之间共享内存
用于创建内核对象的函数几乎都有一个指向SECURITY_ATTRIBUTES结构的指针作为其参数,在使用CreateFileMapping函数的时候,通常只是为该参数传递NULL,这样就可以创建带有默认安全性的内核对象。 默认安全性意味着对象的管理小组的任何成员和对象的创建者都拥有对该对象的全部访问权,而其他所有人均无权访问该对象。可以指定一个ECURITY_ATTRIBUTES结构原创 2008-11-28 17:04:00 · 1914 阅读 · 3 评论 -
Delphi编写系统服务六:在服务中使用COM组件
在服务中调用COM组件不能像在桌面程序中直接创建,在每次创建之前先调用CoInitialize(nil),释放的时候调用CoUninitialize。例如:调用ADO组件var Qry: TADOQuery;begin CoInitialize(nil); Qry := TADOQuery.Create(nil); try ... finally Qry.Free;原创 2008-11-28 17:06:00 · 1577 阅读 · 0 评论 -
Delphi编写系统服务四:如何限制系统服务和桌面程序只运行一个
如何限制系统服务和桌面程序只运行一个在工程加入下列代码可以设置系统服务和桌面程序只运行一个。program FleetReportSvr;uses SvcMgr, Forms, SysUtils, Windows, SvrMain in SvrMain.pas {FleetReportService: TService}, AppMain in AppMain.pas原创 2008-11-28 17:02:00 · 2142 阅读 · 0 评论 -
Delphi编写系统服务七:完成端口演示
在开发大量Socket并发服务器,完成端口加重叠I/O是迄今为止最好的一种解决方案,下面是简单的介绍: “完成端口”模型是迄今为止最为复杂的一种I/O模型,特别适合需要同时管理为数众多的套接字,采用这种模型,往往可以达到最佳的系统性能。但是只适合Windows NT和Windows 2000及以上操作系统。因其设计的复杂性,只有在你的应用程序需要同时管理数百乃至上千套接字的时候,而且希望随着原创 2008-11-28 17:07:00 · 3464 阅读 · 16 评论