您的位置:首页 > 其它

WIN32服务程序(二):卸载服务

2016-01-01 15:36 447 查看
卸载服务的过程是这样的,用OpenSCManager打开SCM,使用OpenService打开准备卸载的服务,通过QueryServiceStatus查询该服务的状态是否停止,如果否,则先停止该服务ControlService,最后用DeleteService删除服务。

#include <windows.h>
#include <winsvc.h>
#include <stdio.h>

void UninstallServices();
void main()
{
UninstallServices();
}

void UninstallServices()
{
char name[100];
SC_HANDLE scm;
SC_HANDLE service;
SERVICE_STATUS status;

printf("服务名称:");
scanf("%s",&name);

if((scm = OpenSCManager(NULL,NULL,SC_MANAGER_CREATE_SERVICE)) == NULL)
printf("error!\n");

service = OpenService(scm,name,SERVICE_ALL_ACCESS | DELETE);
BOOL isSuccess = QueryServiceStatus(service,&status);
if(status.dwCurrentState != SERVICE_STOPPED)
{
isSuccess = ControlService(service,SERVICE_CONTROL_STOP,&status);
Sleep(500);
}
isSuccess = DeleteService(service);
if(!isSuccess)
printf("Uninstall Falid!\n");
else
printf("Uninstall Success!\n");

CloseServiceHandle(service);
CloseServiceHandle(scm);
}


通过运行这个程序,输入服务名称,我们可以将上一篇建立的服务程序删掉了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: