用VC建立Services服务应用程序Word格式文档下载.docx
- 文档编号:20930644
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:23
- 大小:26.71KB
用VC建立Services服务应用程序Word格式文档下载.docx
《用VC建立Services服务应用程序Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《用VC建立Services服务应用程序Word格式文档下载.docx(23页珍藏版)》请在冰豆网上搜索。
这里主要是用到了五个函数OpenSCManager、CreateService、OpenService、ControlService、DeleteService。
OpenSCManager用于打开服务控制管理器;
CreateService用于创建服务;
OpenService用于打开已有的服务,返回该服务的句柄;
ControlService则用于控制已打开的服务状态,这里是让服务停止后才删除;
DeleteService用于删除指定服务。
{
//这里列出主要的两个函数,其它的可以在代码里找。
//打开服务控制管理器
OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
//创建服务
SC_HANDLEhService=:
:
CreateService(
hSCM,szServiceName,szServiceName,
SERVICE_ALL_ACCESS,SERVICE_WIN32_OWN_PROCESS,
SERVICE_DEMAND_START,SERVICE_ERROR_NORMAL,
szFilePath,NULL,NULL,_T("
"
),NULL,NULL);
:
CloseServiceHandle(hService);
CloseServiceHandle(hSCM);
}
//打开服务
OpenService(hSCM,szServiceName,SERVICE_STOP|DELETE);
//停止服务
ControlService(hService,SERVICE_CONTROL_STOP,&
status);
//删除服务
DeleteService(hService);
…
}
五、添加服务主线程函数和控制函数
这里调用RegisterServiceCtrlHandler来注册服务的控制函数,这里要设置status.dwControlsAccepted为SERVICE_ACCEPT_STOP,否则你不能控制这个服务的状态。
voidWINAPIServiceMain()
//Registerthecontrolrequesthandler
status.dwCurrentState=SERVICE_START_PENDING;
status.dwControlsAccepted=SERVICE_ACCEPT_STOP;
//这个要使用,否则你不能控制
//注册服务控制
hServiceStatus=RegisterServiceCtrlHandler(szServiceName,ServiceStrl);
if(hServiceStatus==NULL)
{
LogEvent(_T("
Handlernotinstalled"
));
return;
}
SetServiceStatus(hServiceStatus,&
status.dwWin32ExitCode=S_OK;
status.dwCheckPoint=0;
status.dwWaitHint=0;
status.dwCurrentState=SERVICE_RUNNING;
//模拟服务的运行,10后自动退出。
应用时将主要任务放于此即可
inti=0;
while(i<
10)
Sleep(1000);
i++;
//
status.dwCurrentState=SERVICE_STOPPED;
LogEvent(_T("
Servicestopped"
六、在主线程函数里注册控制函数和程序执行主体
//如上,这里主要是说明这就是程序的执行体
七、在main函数里注册添加安装、删除、注册主函数
intAPIENTRYWinMain(HINSTANCEhInstance,
HINSTANCEhPrevInstance,
LPSTRlpCmdLine,
intnCmdShow)
Init();
dwThreadID=:
GetCurrentThreadId();
SERVICE_TABLE_ENTRYst[]=
{szServiceName,(LPSERVICE_MAIN_FUNCTION)ServiceMain},
{NULL,NULL}
};
if(stricmp(lpCmdLine,"
/install"
)==0)
Install();
elseif(stricmp(lpCmdLine,"
/uninstall"
Uninstall();
else
if(!
StartServiceCtrlDispatcher(st))
{
LogEvent(_T("
RegisterServiceMainFunctionError!
}
return0;
八、总结
其实做一个服务程序并不难,主要是懂得程序的执行体放于哪里?
注册程序的主函数和注册控制函数,如果这两个没有注册的话,你的程序就不知道如何去控制了。
status.dwControlsAccepted=SERVICE_ACCEPT_STOP;
这个也重要,如果你没有设置的话,那么服务就不会受你控制了。
组策略编辑器用法-如何使用组策略
1、组策略编辑器的命令行启动
您只需单击选择“开始”→“运行”命令,在“运行”对话框的“打开”栏中输入“gpedit.msc”,然后单击“确定”按扭即可启动WindowsXP组策略编辑器。
(注:
这个“组策略”程序位于“C:
\WINNT\SYSTEM32”中,文件名为“gpedit.msc”。
)
当多人共用一台计算机时,在WindowsXP中设置用户权限,可以按照以下步骤进行:
1、运行组策略编辑器程序(gpedit.msc)。
2、在编辑器窗口的左侧窗格中逐级展开“计算机配置”→“Windows设置”→“安全设置”→“本地策略”→“用户权限指派”分支。
3、双击需要改变的用户权限。
单击“增加”,然后双击想指派给权限的用户帐号。
如图8所示。
连续两次单击“确定”按扭。
在WindowsXP中,新增了一条命令行工具“shutdown”,其作用是“关闭或重新启动本地或远程计算机”。
利用它,我们不但可以注销用户,关闭或重新启动计算机,还可以实现定时关机、远程关机。
该命令的语法格式如下:
shutdown[-i|-l|-s|-r|-a][-f][-m[\\ComputerName]][-txx][-c"
message"
][-d:
xx:
yy]
其中,各参数的含义为:
-i显示图形界面的对话框。
-l注销当前用户,这是默认设置。
-mComputerName优先。
-s关闭计算机。
-r关闭之后重新启动。
-a中止关闭。
除了-l和ComputerName外,系统将忽略其它参数
。
在超时期间,您只可以使用-a。
-f强制运行要关闭的应用程序。
-m[\\ComputerName]指定要关闭的计算机。
-txx将用于系统关闭的定时器设置为xx秒。
默认值是20秒。
-c"
指定将在“系统关闭”窗口中的“消息”区域显示的消息。
最多可以使用127个字符。
引号中必须包含消息。
-d
yy列出系统关闭的原因代码。
首先,我们来看一下该命令的一些基本用法:
1、注销当前用户
shutdown-l该命令只能注销本机用户,对远程计算机不适用。
2、关闭本地计算机
shutdown-s
3、重启本地计算机
shutdown-r
4、定时关机
shutdown-s-t30 指定在30秒之后自动关闭计算机。
向组策略安全组添加计算机和用户
无线网络策略经过配置并且能够正常工作之后,向控制该策略应用程序的安全组中添加其他计算机则非常简单。
•向无线网络组策略安全组添加计算机
1.
在“ActiveDirectory用户和计算机”中,找到与要应用的无线网络策略相对应的WirelessNetworkPolicy-Computer安全组。
您必须作为对此组具有“修改成员身份”权限的用户进行登录。
2.
向选定的安全组添加计算机。
•向远程访问策略安全组添加用户
登录到管理计算机,要求作为DomainAdministrators组成员登录,或者使用具有修改RemoteAccessPolicy-WirelessUsers安全组成员身份所需的安全权限的其他帐户登录。
在“ActiveDirectory用户和计算机”中,找到与控制无线LAN访问的远程访问策略相对应的RemoteAccessPolicy-WirelessUsers安全组。
3.
将用户添加到选定的安全组。
•将计算机添加到远程访问策略安全组
登录到管理计算机上,要求作为DomainAdministrators组成员登录,或者使用具有修改RemoteAccessPolicy-WirelessComputers安全组成员身份所需的安全权限的其他帐户登录。
向选定的安全组中添加计算机。
下面是针对2003的
将组策略应用于组织单位或域
依次单击“开始”、“管理工具”、“ActiveDirectory用户和计算机”,打开“ActiveDirectory用户和计算机”。
突出显示相关域或组织单位,单击“操作”菜单,选择“属性”。
选择“组策略”选项卡。
注意:
每个容器可应用多个策略。
这些策略的处理顺序是从列表的底部向上。
如果出现冲突,最后应用的策略优先。
4.
单击“新建”创建一个策略,并为其指定有实际意义的名称,如“域策略”。
单击“选项”按钮可配置“禁止替代”设置。
“禁止替代”是为每个单独的策略配置的,而不是为整个容器;
“阻止策略继承”则是为整个容器配置的。
如果“禁止替代”和“阻止策略继承”设置发生冲突,“禁止替代”设置优先。
要配置“阻止策略继承”,请选中OU属性中的复选框。
组策略可自动更新,但为了立即启动更新过程,可在命令提示符下使用下面的GPUpdate命令:
GPUpdate/force
•向“用户权限分配”添加安全组
突出显示相关OU(如“成员服务器”),单击“操作”菜单,选择“属性”。
单击“组策略”选项卡,选择相关策略(如“成员服务器基准策略”),然后单击“编辑”。
在“组策略对象编辑器”中,依次展开“计算机配置”、“Windows设置”、“安全设置”、“本地策略”,然后突出显示“用户权限分配”。
5.
在右侧窗格中,右键单击相关用户权限。
6.
选中“定义这些策略设置”复选框,单击“添加用户和组”修改该列表。
7.
单击“确定”。
将安全模板导入组策略
•导入安全模板
突出显示相关域或OU,单击“操作”菜单,选择“属性”。
突出显示相关策略,单击“编辑”。
依次展开“计算机配置”、“Windows设置”,然后突出显示“安全设置”。
单击“操作”菜单,选择“导入策略”。
导航到\SecurityGuide\JobAids,选择相关模板,单击“打开”。
8.
在“组策略对象编辑器”中,单击“文件”菜单,选择“退出”。
9.
在容器属性中,单击“确定”。
使用“安全配置和分析”
依次单击“开始”、“运行”。
在“打开”文本框中键入mmc,然后单击“确定”。
在Microsoft管理控制台中,单击“文件”,选择“添加/删除管理单元”。
单击“添加”,突出显示列表中的“安全配置和分析”。
依次单击“添加”、“关闭”、“确定”。
突出显示“安全配置和分析”,单击“操作”菜单,选择“打开数据库”。
键入新的数据库名称(如BastionHost),单击“打开”。
在“导入模板”界面中,导航到\SecurityGuide\JobAids,选择相关模板。
单击“打开”。
•分析导入的模板并与当前设置比较
突出显示Microsoft管理单元中的“安全配置和分析”,单击“操作”菜单,并选择“立即分析计算机”。
单击“确定”,接受默认的“错误日志文件路径”。
完成分析后,展开节点标题对结果进行研究。
•应用安全模板
突出显示Microsoft管理单元中的“安全配置和分析”,单击“操作”菜单,选择“立即配置计算机”。
在Microsoft管理控制台,单击“文件”,然后选择“退出”关闭“
安全配置和分析”。
VC/MFC实现禁止,停止,启动,创建NT服务
The
CreateService
function
creates
a
service
object
and
adds
it
to
the
specified
control
manager
database.
SC_HANDLE
CreateService(
SC_HANDLE
hSCManager,
LPCTSTR
lpServiceName,
lpDisplayName,
DWORD
dwDesiredAccess,
dwServiceType,
dwStartType,
dwErrorControl,
lpBinaryPathName,
lpLoadOrderGroup,
LPDWORD
lpdwTagId,
lpDependencies,
lpServiceStartName,
lpPassword
DeleteService
marks
for
deletion
from
BOOL
DeleteService(
hService
Installing
Service
A
configuration
program
uses
install
in
SCM
database.
The
application-defined
schSCManager
handle
must
have
SC_MANAGER_CREATE_SERVICE
access
SCManager
object.
following
example
shows
how
service.
VOID
CreateSampleService()
{
lpszBinaryPathName
=
"
%SystemRoot%\\system\\testserv.exe"
;
schService
CreateService(
schSCManager,
//
database
Sample_Srv"
name
of
lpszDisplayName,
display
SERVICE_ALL_ACCESS,
desired
SERVICE_WIN32_OWN_PROCESS,
type
SERVICE_DEMAND_START,
start
SERVICE_ERROR_NORMAL,
error
lpszBinaryPathName,
service'
s
binary
NULL,
no
load
ordering
group
tag
identifier
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC 建立 Services 服务 应用程序
![提示](https://static.bdocx.com/images/bang_tan.gif)