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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? remoteadministrator.cpp

?? <Visual C++ 網絡程序設計實例詳解>配套源碼
?? 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一区二区三区免费野_久草精品视频
精品一区二区免费| 久久久99精品久久| 日韩精品色哟哟| 欧美日韩国产综合一区二区三区 | www.亚洲色图.com| 日韩专区在线视频| 91精品国产一区二区三区| 首页国产丝袜综合| 精品国产乱码久久久久久闺蜜 | 久久久久久日产精品| 国产99久久久精品| 亚洲女人小视频在线观看| 在线观看成人小视频| 天堂一区二区在线| 久久青草欧美一区二区三区| 91丨九色丨蝌蚪丨老版| 欧美不卡视频一区| 欧美日韩一区中文字幕| 国产精品影视天天线| 久久精品视频在线看| 懂色av一区二区三区蜜臀| 亚洲欧美另类久久久精品2019| 欧美色图第一页| 另类成人小视频在线| 国产精品欧美极品| 欧美性猛交xxxx黑人交| 国内精品久久久久影院薰衣草 | 亚洲1区2区3区视频| 日韩女优电影在线观看| 成人av在线一区二区| 亚洲一区二区精品视频| 久久久久亚洲蜜桃| 欧美视频一区二区三区| 高清国产一区二区| 日精品一区二区三区| 欧美国产综合色视频| 欧美久久久影院| 美女在线视频一区| 从欧美一区二区三区| 精品一区二区免费在线观看| 精品日韩在线观看| 在线影院国内精品| 韩国三级中文字幕hd久久精品| 中文字幕一区在线观看| 日韩一区二区免费视频| 91视频.com| 激情综合网最新| 亚洲一区二区黄色| 国产精品久久久久久福利一牛影视| 欧美另类z0zxhd电影| 91视视频在线观看入口直接观看www | 久久精品在线观看| 欧美日韩国产综合久久| 久久99精品网久久| 午夜精品成人在线视频| 日本一区二区三区电影| 欧美va亚洲va国产综合| 欧美综合色免费| 一区二区视频免费在线观看| 成人永久aaa| 狠狠久久亚洲欧美| 久久网这里都是精品| 欧美性大战xxxxx久久久| 99久久综合国产精品| 国产老肥熟一区二区三区| 日韩电影在线观看电影| 亚洲福利视频三区| 亚洲制服丝袜av| 亚洲人成在线观看一区二区| 国产精品入口麻豆九色| 久久久久国产精品麻豆ai换脸 | 久久久久国产成人精品亚洲午夜 | 91性感美女视频| 波多野结衣91| 成人18视频日本| 高清成人免费视频| 国产成人综合在线观看| 首页国产欧美久久| 国产在线精品一区二区不卡了| 午夜精品免费在线| 亚洲在线视频网站| 艳妇臀荡乳欲伦亚洲一区| 国产精品福利在线播放| 亚洲色图制服诱惑| 亚洲精品一二三区| 亚洲午夜电影在线观看| 亚洲高清一区二区三区| 视频一区视频二区中文| 五月天久久比比资源色| 亚洲成人动漫精品| 日韩av午夜在线观看| 视频一区在线播放| 久久精品国产99国产| 国产在线一区观看| 国产99久久久精品| 色av成人天堂桃色av| 欧美视频一区二区三区| 日韩一二在线观看| 久久久久9999亚洲精品| 国产精品传媒入口麻豆| 一区二区三区色| 日韩国产精品91| 久久综合综合久久综合| 粉嫩av一区二区三区在线播放| 97国产一区二区| 欧美日本韩国一区二区三区视频| 日韩一区二区三区电影在线观看 | 欧美在线视频全部完| 7777精品伊人久久久大香线蕉 | 日韩女优视频免费观看| 欧洲激情一区二区| 欧美一区二区在线视频| 久久久国产精华| 樱桃国产成人精品视频| 精品一区二区免费| 91视频你懂的| 欧美一级片在线看| 国产精品美日韩| 天天综合日日夜夜精品| 粉嫩一区二区三区在线看| 在线观看区一区二| 精品人在线二区三区| 亚洲欧美在线另类| 久久精品国产在热久久| 一本高清dvd不卡在线观看| 日韩一级大片在线观看| 国产精品成人免费在线| 老司机精品视频一区二区三区| 91香蕉视频在线| 久久综合五月天婷婷伊人| 亚洲自拍另类综合| 国产91精品一区二区麻豆网站| 666欧美在线视频| 亚洲色图在线看| 国产寡妇亲子伦一区二区| 欧美精品精品一区| 亚洲欧洲综合另类在线| 国产一区二区在线观看视频| 欧美精三区欧美精三区| 亚洲同性gay激情无套| 激情五月播播久久久精品| 欧美三级蜜桃2在线观看| 亚洲欧美在线aaa| 国产一区二区在线视频| 日韩一区二区三区在线| 亚洲成av人在线观看| 97精品国产露脸对白| 日本一区二区高清| 狠狠色丁香久久婷婷综合_中| 欧美久久久久久久久中文字幕| 中文字幕一区二区日韩精品绯色| 在线免费观看不卡av| 亚洲线精品一区二区三区八戒| 亚洲一区二区五区| 裸体健美xxxx欧美裸体表演| 色屁屁一区二区| 1024成人网色www| 国产成人免费视频| 久久久美女毛片| 狠狠色狠狠色综合日日91app| 正在播放一区二区| 日韩av午夜在线观看| 欧美精品日日鲁夜夜添| 五月天丁香久久| 欧美日本一区二区三区四区| 亚洲精品乱码久久久久久黑人| 懂色av一区二区三区免费观看| 精品成人一区二区三区四区| 久久狠狠亚洲综合| 久久综合九色综合欧美亚洲| 精品一区二区三区免费毛片爱| 日韩欧美国产不卡| 激情综合五月婷婷| 国产在线播精品第三| 久久激情五月激情| 久久九九99视频| 国产白丝网站精品污在线入口| 国产三级精品视频| 北岛玲一区二区三区四区| 中文字幕一区二区三区不卡| 91丨porny丨在线| 国精产品一区一区三区mba桃花| 大白屁股一区二区视频| 精品国产一区二区亚洲人成毛片 | 国v精品久久久网| 国产精品每日更新在线播放网址 | 久久综合狠狠综合久久综合88 | 成人一区二区在线观看| 亚洲欧洲在线观看av| 在线精品国精品国产尤物884a| 亚洲国产精品久久艾草纯爱| 欧美猛男男办公室激情| 美腿丝袜在线亚洲一区| 26uuu欧美| 91亚洲国产成人精品一区二区三| 亚洲自拍与偷拍| 日韩三级在线观看| 丁香亚洲综合激情啪啪综合| 亚洲激情图片qvod| 欧美va亚洲va在线观看蝴蝶网|