亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? remoteadministrator.cpp

?? <Visual C++ 網(wǎng)絡程序設計實例詳解>配套源碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:

#include "stdafx.h"
#include "RemoteAdministrator.h"
#include "GlobalHelperFunc.h"
#include "GlobalMFCHelperFunc.h"
#include "MachineInfo.h"
#include "Resource.h"
#include <winsvc.h>

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif


extern CRITICAL_SECTION g_CriticalSection;

CRemoteAdministrator::CRemoteAdministrator()
{

}

CRemoteAdministrator::~CRemoteAdministrator()
{
	// Clean the connection pending list
	CString* pStr = NULL;
	POSITION pos = m_cplPendingConnectionList.GetHeadPosition();
	while (pos != NULL)
	{
		pStr = m_cplPendingConnectionList.GetNext(pos);

		ASSERT(pStr != NULL);

		if (pStr != NULL)
		{
			delete pStr;
		}
	}
	m_cplPendingConnectionList.RemoveAll();


	// Clean the connected machine list
	CMachineInfo* pMachineInfo = NULL;
	pos = m_milConnectedMachines.GetHeadPosition();
	while (pos != NULL)
	{
		pMachineInfo = m_milConnectedMachines.GetNext(pos);

		ASSERT(pMachineInfo != NULL);

		if (pMachineInfo != NULL)
		{
			delete pMachineInfo;
		}
	}
	m_milConnectedMachines.RemoveAll();
}

BOOL CRemoteAdministrator::EstablishConnection(CString strResource, CString strLogon, CString strRemoteMachineIP, CString strPwd, BOOL bEstablish)
{
	::EnterCriticalSection(&g_CriticalSection);

    TCHAR szRemoteResource[_MAX_PATH];
    DWORD dwRetVal = NO_ERROR;

    // Remote resource, \\remote\ipc$, remote\admin$, ...
    ::sprintf(szRemoteResource, _T("\\\\%s\\%s"), strRemoteMachineIP.GetBuffer(0), strResource.GetBuffer(0));

    //
    // Disconnect or connect to the resource, based on bEstablish
    //
    if (bEstablish) 
    {
        NETRESOURCE nr;
        nr.dwType = RESOURCETYPE_ANY;
        nr.lpLocalName = NULL;
        nr.lpRemoteName = (LPTSTR)&szRemoteResource;
        nr.lpProvider = NULL;
      
        //Establish connection (using username/pwd)
        dwRetVal = ::WNetAddConnection2(
                        &nr, 
                        strPwd.GetBuffer(0), 
                        strLogon.GetBuffer(0), 
                        FALSE
                        );
        
        // Let the caller generate the error message
        /*if (dwRetVal != NO_ERROR)
        {
            //::PopError(dwRetVal);
            /*CString strFromatAPIMsg = ::FormatError(dwRetVal);
            CString strDisplayMsg;
            strDisplayMsg.Format("Machine IP %s: %s", strRemoteMachineIP.GetBuffer(0), strFromatAPIMsg.GetBuffer(0));
            
            ::AfxMessageBox(strDisplayMsg);*/
        //}*/
    }
    else
    {
        // Disconnect
        dwRetVal = ::WNetCancelConnection2(szRemoteResource, 0, NULL);

        // Let the caller generate the error message
        /*if (dwRetVal != NO_ERROR)
        {
            //::PopError(dwRetVal);
            /*CString strFromatAPIMsg = ::FormatError(dwRetVal);
            CString strDisplayMsg;
            strDisplayMsg.Format("Machine IP %s: %s", strRemoteMachineIP.GetBuffer(0), strFromatAPIMsg.GetBuffer(0));
            
            ::AfxMessageBox(strDisplayMsg);*/
        //}*/
     }
      
    // Prepare the return value
    if (dwRetVal == NO_ERROR) 
    {
		::LeaveCriticalSection(&g_CriticalSection);
        return TRUE; // indicate success
    }

	::LeaveCriticalSection(&g_CriticalSection);
    return FALSE;
}


void CRemoteAdministrator::AddMachine(CMachineInfo& miMachineInfo)
{
    CMachineInfo* pmiMachineInfo = new CMachineInfo;
    
    ASSERT(pmiMachineInfo);

    if (pmiMachineInfo != NULL)
    {
        (*pmiMachineInfo) = miMachineInfo;

        // Update the connected machines list
        m_milConnectedMachines.AddHead(pmiMachineInfo);
		::Sleep(1000);
    }
    else
    {
        ::AfxMessageBox(_T("No memory for new machine details !"));
    }
}

void CRemoteAdministrator::DeleteMachine(CMachineInfo& miMachineInfo)
{
    CMachineInfo* pMachineInfo = NULL;
    POSITION pos = m_milConnectedMachines.GetHeadPosition();
    
	::EnterCriticalSection(&g_CriticalSection);

    while (pos != (POSITION)0xcdcdcdcd && pos != NULL)
    {
        pMachineInfo = m_milConnectedMachines.GetAt(pos);
        
        ASSERT (pMachineInfo);

        if (miMachineInfo == *pMachineInfo) 
        {
            // delete the machine from list
            m_milConnectedMachines.RemoveAt(pos);

            delete pMachineInfo;
            pMachineInfo = NULL;

			::LeaveCriticalSection(&g_CriticalSection);
            return;

        }

        m_milConnectedMachines.GetNext(pos);
    }

	::LeaveCriticalSection(&g_CriticalSection);
}


BOOL CRemoteAdministrator::CheckIfMachinePresent(CString strIP)
{
    // Machine with same IP cannot be added to the monitoring list
    CMachineInfo* pMachineInfo = NULL;
    POSITION pos = m_milConnectedMachines.GetHeadPosition();
    
    while (pos != (POSITION)0xcdcdcdcd && pos != NULL)
    {
        pMachineInfo = m_milConnectedMachines.GetNext(pos);
        
        ASSERT (pMachineInfo);

        if (strIP == pMachineInfo->GetIP()) 
        {
            return TRUE;
        }
    }

    return FALSE;
}


void CRemoteAdministrator::RefreshProcessList(CString strIP, CProcessInfoList& pilProcessList)
{
    CMachineInfo* pMachineInfo = GetMachineInfo(strIP);
    
    ASSERT(pMachineInfo);
    
    if (pMachineInfo != NULL)
    {
        pMachineInfo->RefreshProcessList(pilProcessList);
    }
}

CMachineInfo* CRemoteAdministrator::GetMachineInfo(CString strIP)
{
    CMachineInfo* pMachineInfo = NULL;
    POSITION pos = NULL;

	::EnterCriticalSection(&g_CriticalSection);
    pos = m_milConnectedMachines.GetHeadPosition();

    while (pos != (POSITION)0xcdcdcdcd && pos != NULL)
    {
        pMachineInfo = m_milConnectedMachines.GetNext(pos);

        if (pMachineInfo->GetIP() == strIP)
        {
			::LeaveCriticalSection(&g_CriticalSection);
            return pMachineInfo;
        }
    }

	::LeaveCriticalSection(&g_CriticalSection);

    // No machine with IP strIP is present
    ASSERT (NULL);

    return NULL;
}

BOOL CRemoteAdministrator::EstablishAdminConnection(CString strRemoteMachineIP, CString strPwd, BOOL bEstablish)
{
	CString strResource = _T("ADMIN$");
	CString strLogon    = _T("Administrator");

	BOOL bConnectionSuccess = EstablishConnection(strResource, strLogon, strRemoteMachineIP, strPwd, bEstablish);
    
    if (!bConnectionSuccess)
    {
        CString strFormattedErrorMsg = ErrorHandling::ConvertStringTableIDToErrorMsg(strRemoteMachineIP, IDS_NO_ADMIN_CONNECTION);

        //::AfxMessageBox(strFormattedErrorMsg);
		//::GetMainFrame()->ShowBalloonMsgInTray(_T("Warning"), strFormattedErrorMsg);
    }
    return bConnectionSuccess;
}

BOOL CRemoteAdministrator::EstablishIPCConnection(CString strRemoteMachineIP, CString strPwd, BOOL bEstablish)
{
	CString strResource = _T("IPC$");
	CString strLogon    = _T("Administrator");

    BOOL bConnectionSuccess = EstablishConnection(strResource, strLogon, strRemoteMachineIP, strPwd, bEstablish);

    if (!bConnectionSuccess)
    {
        CString strFormattedErrorMsg = ErrorHandling::ConvertStringTableIDToErrorMsg(strRemoteMachineIP, IDS_NO_IPC_CONNECTION);
        
        //::AfxMessageBox(strFormattedErrorMsg);
		//::GetMainFrame()->ShowBalloonMsgInTray(_T("Warning"), strFormattedErrorMsg);
    }
    return bConnectionSuccess;
}


BOOL CRemoteAdministrator::EstablishAllConnections(CString strRemoteMachineIP, CString strPwd, BOOL bEstablish)
{
    BOOL bSuccessAdminConnection = EstablishAdminConnection(strRemoteMachineIP, strPwd, bEstablish);
    BOOL bSuccessIPCConnection   = EstablishIPCConnection(strRemoteMachineIP, strPwd, bEstablish);
    
    return (bSuccessAdminConnection && bSuccessIPCConnection);
}


BOOL CRemoteAdministrator::CopyServiceExeToRemoteMachine(CString strRemoteMachineIP)
{
   DWORD dwWritten = 0;

   HMODULE hInstance = ::GetModuleHandle(NULL);

   // Find the binary file in resources
   HRSRC hServiceExecutableRes = ::FindResource( 
                                    hInstance, 
                                    MAKEINTRESOURCE(IDR_REMOTEADMIN), 
                                    _T("EXECUTABLES")
                                    );

   HGLOBAL hServiceExecutable = ::LoadResource( 
                                    hInstance, 
                                    hServiceExecutableRes
                                    );

   LPVOID pServiceExecutable = ::LockResource(hServiceExecutable);

   if (pServiceExecutable == NULL)
      return FALSE;

   DWORD dwServiceExecutableSize = ::SizeofResource(
                                   hInstance,
                                   hServiceExecutableRes
                                   );

   TCHAR szServiceExePath[_MAX_PATH];

   ::sprintf(
       szServiceExePath, 
       _T("\\\\%s\\ADMIN$\\System32\\%s"), 
       strRemoteMachineIP.GetBuffer(0), 
       REMOTE_ADMIN_SERVICE_EXE
       );

   // Copy binary file from resources to \\remote\ADMIN$\System32
   HANDLE hFileServiceExecutable = ::CreateFile( 
                                        szServiceExePath,
                                        GENERIC_WRITE,
                                        0,
                                        NULL,
                                        CREATE_ALWAYS,
                                        FILE_ATTRIBUTE_NORMAL,
                                        NULL
                                        );

   if (hFileServiceExecutable == INVALID_HANDLE_VALUE)
   {
       return FALSE;
   }
         
   ::WriteFile(hFileServiceExecutable, pServiceExecutable, dwServiceExecutableSize, &dwWritten, NULL);

   ::CloseHandle(hFileServiceExecutable);
   
   return (dwWritten == dwServiceExecutableSize);
}


BOOL CRemoteAdministrator::ConnectToRemoteService(CString strRemoteMachineIP, DWORD dwRetry, DWORD dwRetryTimeOut)
{
    TCHAR szRemoteAdminPipeName[_MAX_PATH]               = _T("");
    TCHAR szRemoteAdminProcessInfoPipeName[_MAX_PATH]    = _T("");
    TCHAR szRemoteAdminProcessExecutePipeName[_MAX_PATH] = _T("");
    TCHAR szRemoteAdminProcessKillPipeName[_MAX_PATH]    = _T("");
    TCHAR szRemoteAdminSysShutdownPipe[_MAX_PATH]        = _T("");
    
    HANDLE hCommandPipe = INVALID_HANDLE_VALUE;

    // Remote service communication pipe name
    ::sprintf(
        szRemoteAdminPipeName, 
        _T("\\\\%s\\pipe\\%s"), 
        strRemoteMachineIP.GetBuffer(0), 
        REMOTE_ADMIN_PIPE
        );

    // Remote service communication pipe name
    ::sprintf(
        szRemoteAdminProcessInfoPipeName, 
        _T("\\\\%s\\pipe\\%s"), 
        strRemoteMachineIP.GetBuffer(0), 
        REMOTE_ADMIN_PROCESS_INFO_PIPE
        );

    // Remote service communication pipe name
    ::sprintf(
        szRemoteAdminProcessExecutePipeName, 
        _T("\\\\%s\\pipe\\%s"), 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕一区二区在线观看| 亚洲一区二区三区四区中文字幕| 色综合久久88色综合天天免费| 青青草国产精品97视觉盛宴| 亚洲视频一区在线观看| 欧美成人午夜电影| 欧美日韩精品一区二区天天拍小说 | 欧美国产一区二区| 欧美理论电影在线| 91在线视频官网| 国产999精品久久久久久| 日本美女一区二区三区视频| 亚洲免费视频中文字幕| 国产精品美女久久久久久久久| 日韩丝袜美女视频| 91精品国产麻豆| 欧美日韩一区二区三区四区| 91无套直看片红桃| 国产高清不卡二三区| 久久国产日韩欧美精品| 亚洲h在线观看| 洋洋av久久久久久久一区| 国产三级欧美三级| 久久丝袜美腿综合| 精品欧美一区二区久久| 日韩欧美综合一区| 欧美一级日韩一级| 日韩欧美一级在线播放| 日韩一区二区中文字幕| 欧美精品一级二级三级| 欧美日韩国产综合草草| 欧美在线高清视频| 欧美性xxxxx极品少妇| 91麻豆免费看| 色94色欧美sute亚洲线路一久| 99国产精品99久久久久久| 99视频精品在线| youjizz国产精品| 91精品国产综合久久久久| 欧美三级日韩三级| 欧美日韩小视频| 欧美一区二区在线播放| 欧美一级在线视频| wwwwww.欧美系列| 国产欧美日韩亚州综合 | 欧美日韩国产影片| 欧美日韩久久久一区| 欧美电影一区二区三区| 日韩欧美在线123| 26uuu色噜噜精品一区二区| 精品国产乱码久久久久久闺蜜| 精品福利一区二区三区免费视频| 精品国产成人在线影院| 亚洲国产精品av| 亚洲欧美另类久久久精品| 亚洲国产成人精品视频| 日韩av中文在线观看| 极品美女销魂一区二区三区 | 亚洲视频狠狠干| 一区二区三区精品在线| 日韩电影一区二区三区| 国产一区二区三区国产| av在线综合网| 欧美人妇做爰xxxⅹ性高电影 | 欧美日韩国产一级| 日韩美一区二区三区| 国产精品人成在线观看免费 | 久久一区二区视频| ㊣最新国产の精品bt伙计久久| 亚洲电影一区二区| 国产一区二区在线视频| 色综合久久久久综合99| 日韩亚洲欧美成人一区| 国产精品久久免费看| 亚洲第一狼人社区| 国产一区二区三区日韩| 色999日韩国产欧美一区二区| 欧美第一区第二区| 亚洲欧洲日韩综合一区二区| 日本女优在线视频一区二区 | 色先锋aa成人| 欧美精品一区二区蜜臀亚洲| 亚洲图片你懂的| 另类小说欧美激情| 色婷婷综合激情| 久久久久亚洲综合| 亚洲成av人综合在线观看| 大美女一区二区三区| 欧美另类变人与禽xxxxx| 国产精品高潮呻吟| 黑人巨大精品欧美黑白配亚洲| 91成人看片片| 亚洲国产成人一区二区三区| 男人的j进女人的j一区| 色94色欧美sute亚洲线路二| 欧美激情中文字幕| 久久精品国产精品青草| 欧美日韩一区视频| 国产精品美女www爽爽爽| 看电视剧不卡顿的网站| 在线免费观看日本欧美| 国产精品久久久久婷婷| 91社区在线播放| 国产午夜亚洲精品羞羞网站| 日韩电影在线免费看| 欧美午夜精品电影| 综合色中文字幕| 国产精品99久久久| 欧美电视剧免费全集观看| 亚洲成人免费在线| 欧美在线观看视频一区二区| 亚洲欧洲精品一区二区精品久久久| 久久国产尿小便嘘嘘尿| 欧美久久免费观看| 亚洲韩国精品一区| 在线观看免费成人| 一区二区成人在线| 色综合天天综合网天天狠天天| 国产精品久久久久影院色老大| 国产综合色视频| 久久众筹精品私拍模特| 久久99国内精品| 欧美大度的电影原声| 毛片一区二区三区| 日韩精品一区二区三区中文精品| 丝袜美腿一区二区三区| 欧美精品乱人伦久久久久久| 五月婷婷综合激情| 欧美色图片你懂的| 亚洲电影一区二区| 欧美精品日韩一本| 日本aⅴ精品一区二区三区 | 最新不卡av在线| 不卡视频一二三四| 亚洲免费观看高清完整| 在线视频一区二区三| 一二三区精品福利视频| 欧美探花视频资源| 午夜国产精品一区| 欧美一区二区三区成人| 日本欧美加勒比视频| 精品成人佐山爱一区二区| 国产一区二区福利| 国产亚洲自拍一区| jiyouzz国产精品久久| 1024亚洲合集| 欧美日韩精品是欧美日韩精品| 图片区日韩欧美亚洲| 欧美成人一级视频| 国产在线一区二区综合免费视频| 久久精品综合网| 91麻豆免费看| 日韩av高清在线观看| 国产亚洲精久久久久久| 不卡影院免费观看| 成人妖精视频yjsp地址| 亚洲日本在线天堂| 欧美高清你懂得| 韩国三级电影一区二区| 最新不卡av在线| 欧美精品日韩精品| 国产美女精品人人做人人爽| 中文字幕乱码日本亚洲一区二区| 99久久婷婷国产| 日本欧美一区二区三区| 国产欧美精品一区二区色综合朱莉| 97精品电影院| 日本麻豆一区二区三区视频| 久久嫩草精品久久久久| 97se狠狠狠综合亚洲狠狠| 天天综合网 天天综合色| 久久久久久久网| 在线精品视频免费观看| 国产一区二区三区精品欧美日韩一区二区三区| 中文字幕第一区第二区| 777亚洲妇女| 不卡一卡二卡三乱码免费网站| 手机精品视频在线观看| 国产精品国产三级国产aⅴ入口 | 欧美电视剧在线观看完整版| 成人av免费在线| 日韩成人精品在线观看| 中文字幕亚洲在| 欧美mv日韩mv亚洲| 色偷偷一区二区三区| 国产在线精品一区在线观看麻豆| 亚洲精品美国一| 精品国产自在久精品国产| 在线免费观看日本一区| 国产精品亚洲人在线观看| 亚洲成av人片一区二区三区| 中文字幕av一区 二区| 日韩三级.com| 欧美三片在线视频观看| 成人app网站| 国产麻豆日韩欧美久久| 日韩精彩视频在线观看| 亚洲精品国产一区二区精华液| xfplay精品久久| 欧美高清你懂得|