-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserviceCloser.c
60 lines (51 loc) · 1.61 KB
/
serviceCloser.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <windows.h>
#include <stdio.h>
#include "service.h"
#include "managerRun.h"
int main(int argc, char *argv[])
{
if(argc < 2)
{
ShowWindow(GetConsoleWindow(), SW_HIDE);
ManagerRun(argv[0], "2");
return 1;
}
// 打开服务控制管理器
SC_HANDLE handler4ServiceControlManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
if (handler4ServiceControlManager == NULL)
{
MessageBox(NULL, "failed to OpenSCManager()", "tip", MB_OK);
printf("OpenSCManager failed: %d\n", GetLastError());
return 1;
}
// 打开服务
SC_HANDLE hService = OpenService(handler4ServiceControlManager, SERVICE_NAME, SERVICE_ALL_ACCESS);
if (hService == NULL)
{
MessageBox(NULL, "Service not exsit", "tip", MB_OK);
CloseServiceHandle(handler4ServiceControlManager);
return 1;
}
// 停止服务
SERVICE_STATUS status;
if(!ControlService(hService, SERVICE_CONTROL_STOP, &status))
{
MessageBox(NULL, "fail to Stop Service", "tip", MB_OK);
CloseServiceHandle(hService);
CloseServiceHandle(handler4ServiceControlManager);
return 1;
}
// 卸载服务
if (!DeleteService(hService))
{
MessageBox(NULL, "fail to Delete Service", "tip", MB_OK);
CloseServiceHandle(hService);
CloseServiceHandle(handler4ServiceControlManager);
return 1;
}
printf("Service uninstalled successfully\n");
CloseServiceHandle(hService);
CloseServiceHandle(handler4ServiceControlManager);
MessageBox(NULL, "success", "tip", MB_OK);
return 0;
}