📄 main.cpp
字号:
#include <windows.h>
bool RegisterDriver();
bool UnRegisterDriver();
bool StartDriver();
bool StopDriver();
#define DISPNAME_NAME "UpdateService"
CHAR g_szAppName[256] = {0};
void main(void)
{
strcpy(g_szAppName,"F:\\TrustDomain3.0\\lib\\UpdateService.exe");
RegisterDriver();
StartDriver();
}
bool RegisterDriver()
{
SC_HANDLE schSCManager;
SC_HANDLE schService;
schSCManager = OpenSCManager( NULL, NULL, SC_MANAGER_ALL_ACCESS );
schService = CreateService(schSCManager, DISPNAME_NAME, DISPNAME_NAME, SERVICE_ALL_ACCESS,
SERVICE_WIN32_OWN_PROCESS|SERVICE_INTERACTIVE_PROCESS, SERVICE_AUTO_START,
SERVICE_ERROR_NORMAL, g_szAppName, NULL, NULL, NULL, NULL, NULL);
if ( schService == NULL )
{
return GetLastError();
}
CloseServiceHandle( schService );
CloseServiceHandle( schSCManager );
return TRUE;
}
bool UnRegisterDriver()
{
SC_HANDLE schSCManager;
SC_HANDLE schService;
BOOL ret;
StopDriver();
schSCManager = OpenSCManager( NULL, // machine (NULL == local)
NULL, // database (NULL == default)
SC_MANAGER_ALL_ACCESS // access required
);
schService = OpenService( schSCManager,
DISPNAME_NAME,
SERVICE_ALL_ACCESS
);
if ( schService == NULL )
return FALSE;
ret = DeleteService( schService );
if(ret == NULL )
{
return FALSE;
}
CloseServiceHandle( schService );
CloseServiceHandle( schSCManager );
return TRUE;
}
bool StartDriver()
{
SC_HANDLE schSCManager;
SC_HANDLE schService;
BOOL ret;
schSCManager = OpenSCManager( NULL, NULL, SC_MANAGER_ALL_ACCESS );
schService = OpenService( schSCManager,
DISPNAME_NAME,
SERVICE_ALL_ACCESS
);
if ( schService == NULL )
return FALSE;
ret = StartService( schService, 0, NULL );
if(
(ret!=0)||
(ret==0&&(GetLastError() == ERROR_SERVICE_ALREADY_RUNNING))
)
{
ret = TRUE;
}
CloseServiceHandle( schService );
CloseServiceHandle( schSCManager );
return ret;
}
bool StopDriver()
{
SC_HANDLE schSCManager;
SC_HANDLE schService;
BOOL ret;
SERVICE_STATUS serviceStatus;
schSCManager = OpenSCManager( NULL, NULL, SC_MANAGER_ALL_ACCESS );
schService = OpenService( schSCManager, DISPNAME_NAME, SERVICE_ALL_ACCESS );
if ( schService == NULL )
return FALSE;
ret = ControlService( schService, SERVICE_CONTROL_STOP, &serviceStatus );
DWORD result = GetLastError();
CloseServiceHandle( schService );
CloseServiceHandle( schSCManager );
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -