修复操作系统上报不准确的问题
主控端和受控端同时修改LOGIN_INFOR结构,修复了受控端上报的操作系统信息不准确的问题。
This commit is contained in:
@@ -1,6 +1,118 @@
|
||||
#include "StdAfx.h"
|
||||
#include "LoginServer.h"
|
||||
#include "Common.h"
|
||||
#include <string>
|
||||
|
||||
/************************************************************************
|
||||
---------------------
|
||||
<EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD>IT1995
|
||||
<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>CSDN
|
||||
ԭ<EFBFBD>ģ<EFBFBD>https://blog.csdn.net/qq78442761/article/details/64440535
|
||||
<EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD>븽<EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>
|
||||
<EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>2019.3.29<EFBFBD><EFBFBD>Ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
************************************************************************/
|
||||
std::string getSystemName()
|
||||
{
|
||||
std::string vname("δ֪<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ");
|
||||
//<2F><><EFBFBD>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊwin8.1<EFBFBD><EFBFBD>win10
|
||||
typedef void(__stdcall*NTPROC)(DWORD*, DWORD*, DWORD*);
|
||||
HINSTANCE hinst = LoadLibrary("ntdll.dll");
|
||||
DWORD dwMajor, dwMinor, dwBuildNumber;
|
||||
NTPROC proc = (NTPROC)GetProcAddress(hinst, "RtlGetNtVersionNumbers");
|
||||
proc(&dwMajor, &dwMinor, &dwBuildNumber);
|
||||
if (dwMajor == 6 && dwMinor == 3) //win 8.1
|
||||
{
|
||||
vname = "Windows 8.1";
|
||||
printf_s("<EFBFBD>˵<EFBFBD><EFBFBD>Եİ汾Ϊ:%s\n", vname.c_str());
|
||||
return vname;
|
||||
}
|
||||
if (dwMajor == 10 && dwMinor == 0) //win 10
|
||||
{
|
||||
vname = "Windows 10";
|
||||
printf_s("<EFBFBD>˵<EFBFBD><EFBFBD>Եİ汾Ϊ:%s\n", vname.c_str());
|
||||
return vname;
|
||||
}
|
||||
//<2F><><EFBFBD>治<EFBFBD><E6B2BB><EFBFBD>ж<EFBFBD>Win Server<65><72><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>˻<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<CFB5>Ļ<EFBFBD><C4BB>ӣ<EFBFBD><D3A3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
//<2F>ж<EFBFBD>win8.1<EFBFBD><EFBFBD><EFBFBD>µİ汾
|
||||
SYSTEM_INFO info; //<2F><>SYSTEM_INFO<46>ṹ<EFBFBD>ж<EFBFBD>64λAMD<4D><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
GetSystemInfo(&info); //<2F><><EFBFBD><EFBFBD>GetSystemInfo<66><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ
|
||||
OSVERSIONINFOEX os;
|
||||
os.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
|
||||
if (GetVersionEx((OSVERSIONINFO *)&os))
|
||||
{
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ汾<DDB0><E6B1BE>Ϣ<EFBFBD>жϲ<D0B6><CFB2><EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>
|
||||
switch (os.dwMajorVersion)
|
||||
{ //<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>汾<EFBFBD><E6B1BE>
|
||||
case 4:
|
||||
switch (os.dwMinorVersion)
|
||||
{ //<2F>жϴΰ汾<CEB0><E6B1BE>
|
||||
case 0:
|
||||
if (os.dwPlatformId == VER_PLATFORM_WIN32_NT)
|
||||
vname ="Windows NT 4.0"; //1996<39><36>7<EFBFBD>·<EFBFBD><C2B7><EFBFBD>
|
||||
else if (os.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
|
||||
vname = "Windows 95";
|
||||
break;
|
||||
case 10:
|
||||
vname ="Windows 98";
|
||||
break;
|
||||
case 90:
|
||||
vname = "Windows Me";
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
switch (os.dwMinorVersion)
|
||||
{ //<2F>ٱȽ<D9B1>dwMinorVersion<6F><6E>ֵ
|
||||
case 0:
|
||||
vname = "Windows 2000"; //1999<39><39>12<31>·<EFBFBD><C2B7><EFBFBD>
|
||||
break;
|
||||
case 1:
|
||||
vname = "Windows XP"; //2001<30><31>8<EFBFBD>·<EFBFBD><C2B7><EFBFBD>
|
||||
break;
|
||||
case 2:
|
||||
if (os.wProductType == VER_NT_WORKSTATION &&
|
||||
info.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64)
|
||||
vname = "Windows XP Professional x64 Edition";
|
||||
else if (GetSystemMetrics(SM_SERVERR2) == 0)
|
||||
vname = "Windows Server 2003"; //2003<30><33>3<EFBFBD>·<EFBFBD><C2B7><EFBFBD>
|
||||
else if (GetSystemMetrics(SM_SERVERR2) != 0)
|
||||
vname = "Windows Server 2003 R2";
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
switch (os.dwMinorVersion)
|
||||
{
|
||||
case 0:
|
||||
if (os.wProductType == VER_NT_WORKSTATION)
|
||||
vname = "Windows Vista";
|
||||
else
|
||||
vname = "Windows Server 2008"; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>汾
|
||||
break;
|
||||
case 1:
|
||||
if (os.wProductType == VER_NT_WORKSTATION)
|
||||
vname = "Windows 7";
|
||||
else
|
||||
vname = "Windows Server 2008 R2";
|
||||
break;
|
||||
case 2:
|
||||
if (os.wProductType == VER_NT_WORKSTATION)
|
||||
vname = "Windows 8";
|
||||
else
|
||||
vname = "Windows Server 2012";
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
vname = "δ֪<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ";
|
||||
}
|
||||
printf_s("<EFBFBD>˵<EFBFBD><EFBFBD>Եİ汾Ϊ:%s\n", vname.c_str());
|
||||
}
|
||||
else
|
||||
printf_s("<EFBFBD>汾<EFBFBD><EFBFBD>ȡʧ<EFBFBD><EFBFBD>\n");
|
||||
return vname;
|
||||
}
|
||||
|
||||
|
||||
int SendLoginInfo(IOCPClient* ClientObject,DWORD dwSpeed)
|
||||
@@ -8,8 +120,7 @@ int SendLoginInfo(IOCPClient* ClientObject,DWORD dwSpeed)
|
||||
LOGIN_INFOR LoginInfor = {0};
|
||||
LoginInfor.bToken = TOKEN_LOGIN; // <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>¼
|
||||
//<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>ϵͳ<CFB5><CDB3>Ϣ
|
||||
LoginInfor.OsVerInfoEx.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
|
||||
GetVersionEx((OSVERSIONINFO *)&LoginInfor.OsVerInfoEx); // ע<><D7A2>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
strcpy_s(LoginInfor.OsVerInfoEx, getSystemName().c_str());
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD>PCName
|
||||
char szPCName[MAX_PATH] = {0};
|
||||
|
||||
Reference in New Issue
Block a user