From fce9a0c73b6871439232c607446ec214c8a354f5 Mon Sep 17 00:00:00 2001 From: yuanyuanxiang <962914132@qq.com> Date: Thu, 25 Dec 2025 19:03:07 +0100 Subject: [PATCH] Feature: Add menu to control if run master as service --- server/2015Remote/2015Remote.cpp | 5 +++-- server/2015Remote/2015Remote.rc | Bin 108728 -> 108860 bytes server/2015Remote/2015RemoteDlg.cpp | 14 ++++++++++++++ server/2015Remote/2015RemoteDlg.h | 2 ++ server/2015Remote/ServerServiceWrapper.h | 2 +- server/2015Remote/resource.h | Bin 58072 -> 58168 bytes 6 files changed, 20 insertions(+), 3 deletions(-) diff --git a/server/2015Remote/2015Remote.cpp b/server/2015Remote/2015Remote.cpp index 8ad0baa..39bd2d3 100644 --- a/server/2015Remote/2015Remote.cpp +++ b/server/2015Remote/2015Remote.cpp @@ -239,15 +239,16 @@ BOOL LaunchAsAdmin(const char* szFilePath, const char* verb) BOOL CMy2015RemoteApp::InitInstance() { + BOOL runNormal = THIS_CFG.GetInt("settings", "RunNormal", 0); char curFile[MAX_PATH] = { 0 }; GetModuleFileNameA(NULL, curFile, MAX_PATH); - if (!IsRunningAsAdmin() && LaunchAsAdmin(curFile, "runas")) { + if (!runNormal && !IsRunningAsAdmin() && LaunchAsAdmin(curFile, "runas")) { Mprintf("[InitInstance] 程序没有管理员权限,用户选择以管理员身份重新运行。\n"); return FALSE; } // 首先处理服务命令行参数 - if (HandleServiceCommandLine()) { + if (!runNormal && HandleServiceCommandLine()) { Mprintf("[InitInstance] 服务命令已处理,退出。\n"); return FALSE; // 服务命令已处理,退出 } diff --git a/server/2015Remote/2015Remote.rc b/server/2015Remote/2015Remote.rc index b151db5e6096cb00723efefee626ba0b8292937f..1d583407d2bb36d22c1aefd819eede21958e7e1e 100644 GIT binary patch delta 70 zcmdmSk!{ZG6XS%F?cdKGq`Sl=)!nC82~|C6t@5X delta 26 icmdmUiEYP4wuUW??_4I|d(Jg|f)k_I_DQactC9h*vkVCU diff --git a/server/2015Remote/2015RemoteDlg.cpp b/server/2015Remote/2015RemoteDlg.cpp index a700f00..d536d35 100644 --- a/server/2015Remote/2015RemoteDlg.cpp +++ b/server/2015Remote/2015RemoteDlg.cpp @@ -45,6 +45,7 @@ #include #include "common/file_upload.h" #include "SplashDlg.h" +#include #ifdef _DEBUG #define new DEBUG_NEW @@ -605,6 +606,7 @@ BEGIN_MESSAGE_MAP(CMy2015RemoteDlg, CDialogEx) ON_COMMAND(ID_PARAM_ENABLE_LOG, &CMy2015RemoteDlg::OnParamEnableLog) ON_COMMAND(ID_PROXY_PORT, &CMy2015RemoteDlg::OnProxyPort) ON_COMMAND(ID_HOOK_WIN, &CMy2015RemoteDlg::OnHookWin) + ON_COMMAND(ID_RUNAS_SERVICE, &CMy2015RemoteDlg::OnRunasService) END_MESSAGE_MAP() @@ -1283,6 +1285,8 @@ BOOL CMy2015RemoteDlg::OnInitDialog() SubMenu->CheckMenuItem(ID_PARAM_ENABLE_LOG, m_settings.EnableLog ? MF_CHECKED : MF_UNCHECKED); m_bHookWIN = THIS_CFG.GetInt("settings", "HookWIN", 0); SubMenu->CheckMenuItem(ID_HOOK_WIN, m_bHookWIN ? MF_CHECKED : MF_UNCHECKED); + m_runNormal = THIS_CFG.GetInt("settings", "RunNormal", 0); + SubMenu->CheckMenuItem(ID_RUNAS_SERVICE, !m_runNormal ? MF_CHECKED : MF_UNCHECKED); std::map myMap = {{SOFTWARE_CAMERA, "摄像头"}, {SOFTWARE_TELEGRAM, "电报" }}; std::string str = myMap[n]; LVCOLUMN lvColumn; @@ -4572,3 +4576,13 @@ void CMy2015RemoteDlg::OnHookWin() CMenu* SubMenu = m_MainMenu.GetSubMenu(2); SubMenu->CheckMenuItem(ID_HOOK_WIN, m_bHookWIN ? MF_CHECKED : MF_UNCHECKED); } + + +void CMy2015RemoteDlg::OnRunasService() +{ + m_runNormal = !m_runNormal; + THIS_CFG.SetInt("settings", "RunNormal", m_runNormal); + CMenu* SubMenu = m_MainMenu.GetSubMenu(2); + SubMenu->CheckMenuItem(ID_RUNAS_SERVICE, !m_runNormal ? MF_CHECKED : MF_UNCHECKED); + BOOL r = m_runNormal ? ServerService_Uninstall() : ServerService_Install(); +} diff --git a/server/2015Remote/2015RemoteDlg.h b/server/2015Remote/2015RemoteDlg.h index 6ce61af..117e6af 100644 --- a/server/2015Remote/2015RemoteDlg.h +++ b/server/2015Remote/2015RemoteDlg.h @@ -166,6 +166,7 @@ protected: BOOL m_needNotify = FALSE; DWORD g_StartTick; BOOL m_bHookWIN = TRUE; + BOOL m_runNormal = FALSE; // 生成的消息映射函数 virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); @@ -385,4 +386,5 @@ public: afx_msg void OnParamEnableLog(); afx_msg void OnProxyPort(); afx_msg void OnHookWin(); + afx_msg void OnRunasService(); }; diff --git a/server/2015Remote/ServerServiceWrapper.h b/server/2015Remote/ServerServiceWrapper.h index 9337fb0..98297be 100644 --- a/server/2015Remote/ServerServiceWrapper.h +++ b/server/2015Remote/ServerServiceWrapper.h @@ -10,7 +10,7 @@ extern "C" { // 服务配置:服务端使用不同的服务名 #define SERVER_SERVICE_NAME "YamaControlService" #define SERVER_SERVICE_DISPLAY "Yama Control Service" -#define SERVER_SERVICE_DESC "Provides remote desktop control server functionality" +#define SERVER_SERVICE_DESC "Provides remote desktop control server functionality." /* # 停止服务 diff --git a/server/2015Remote/resource.h b/server/2015Remote/resource.h index a7066a9fd2ac4010d04a4c6212ecc76c1e5113ff..e4885c49f84d537328898c2eeb1ac9595bdd18d0 100644 GIT binary patch delta 79 zcmca{lzGQ7<_$OIZ8n+z!(np4eGW$R$%;valPBEcnEdCV*klKBHqIc1PzFB+M~2|Z iM|B}GB70;eAGpA>+2Fw$#>rbm#3tuG5}B;_XcGW(mLe(u delta 51 zcmV-30L=fm#sk>J1F+bhlb|XJlcKRClb|{ZlMtUClW->nv)G>aK(mbC&;gSaaTb%# J;uMpH;