亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
a4yy欧美一区二区三区| 亚洲人成网站色在线观看| 免费三级欧美电影| 欧美大胆一级视频| 久久成人久久爱| 国产欧美1区2区3区| www.亚洲国产| 日韩高清欧美激情| 久久老女人爱爱| 99国产精品久| 亚洲第一激情av| 日韩欧美国产电影| 国产suv精品一区二区6| 亚洲在线视频一区| 色婷婷久久99综合精品jk白丝| 3d动漫精品啪啪| 国产在线精品一区在线观看麻豆| 精品三级在线观看| 国产制服丝袜一区| 亚洲三级免费观看| 在线91免费看| 成人激情校园春色| 亚洲一区二区黄色| 久久久天堂av| 色国产综合视频| 麻豆传媒一区二区三区| 亚洲免费观看高清| 国产欧美日韩另类视频免费观看| 欧美日韩国产综合视频在线观看| 日韩高清不卡一区| 一区二区三区小说| 国产精品乱人伦中文| 日韩免费一区二区三区在线播放| 成人一道本在线| 国产一区 二区| 国产精品一二三区| 捆绑调教美女网站视频一区| 亚洲最大成人综合| 国产精品精品国产色婷婷| 日韩欧美在线影院| 69堂成人精品免费视频| 成a人片亚洲日本久久| 国产一区二区在线观看免费| 奇米精品一区二区三区在线观看| 亚洲中国最大av网站| 18涩涩午夜精品.www| 国产精品色眯眯| 亚洲色图在线看| 亚洲视频一二三区| 亚洲电影一区二区| 一区二区三区在线观看动漫 | 亚洲蜜桃精久久久久久久| 国产日韩欧美在线一区| 亚洲色图视频网| 午夜精品久久久久久久99樱桃| 亚洲老妇xxxxxx| 亚洲一区国产视频| 久久99国产精品尤物| 激情小说欧美图片| 97精品电影院| 69p69国产精品| 久久精品日产第一区二区三区高清版 | 精品国免费一区二区三区| 精品成人佐山爱一区二区| 久久久久国产一区二区三区四区 | 91精品国产高清一区二区三区 | 国产一区二区成人久久免费影院| 久久99精品国产91久久来源| 国产福利一区二区三区视频 | 国产午夜精品一区二区三区视频| 国产午夜精品一区二区| 亚洲女子a中天字幕| 日韩国产欧美三级| 91欧美一区二区| 国产精品久久夜| 风间由美中文字幕在线看视频国产欧美| 欧美精品乱码久久久久久按摩| 日本一区二区免费在线观看视频 | 精品国产乱码久久| 石原莉奈一区二区三区在线观看| av午夜精品一区二区三区| 久久一夜天堂av一区二区三区| 久久99精品国产91久久来源| 欧美成人在线直播| 亚洲精品国久久99热| 国产综合久久久久久久久久久久 | 天堂在线一区二区| 一本一本久久a久久精品综合麻豆| 中文字幕一区二区三区精华液 | 亚洲综合在线五月| 色综合天天在线| 国产精品久久久久久久久果冻传媒| jlzzjlzz欧美大全| 精品国产一区二区在线观看| 秋霞成人午夜伦在线观看| 日韩亚洲欧美在线| 激情小说欧美图片| 亚洲一区二区三区小说| 在线精品国精品国产尤物884a| 91麻豆高清视频| 国产精品久久久久久久午夜片| 风间由美中文字幕在线看视频国产欧美| 精品久久久久久综合日本欧美| 久久国产精品色| 精品嫩草影院久久| 国产一二精品视频| 亚洲欧美日韩国产手机在线 | 亚洲欧美日韩国产另类专区| 91亚洲精品乱码久久久久久蜜桃| 亚洲国产精品一区二区www| 久久夜色精品国产噜噜av | 成人美女视频在线看| 一区二区三区四区蜜桃| 欧美videos大乳护士334| 色噜噜狠狠一区二区三区果冻| 另类人妖一区二区av| 中文字幕在线视频一区| 日韩欧美一级精品久久| 不卡的av电影| 国产精品一区一区| 亚洲成人久久影院| 中文字幕国产一区| 91麻豆精品国产91| 色婷婷久久久久swag精品| 国产精品亚洲一区二区三区妖精 | 91天堂素人约啪| 国内不卡的二区三区中文字幕 | 日韩电影在线观看一区| 国产精品亲子伦对白| 精品奇米国产一区二区三区| 日韩欧美激情一区| 不卡的av电影| 成人伦理片在线| 久久99深爱久久99精品| 日韩福利视频导航| 亚洲国产综合色| 亚洲超碰精品一区二区| 日韩美女视频19| 亚洲一区在线观看视频| 亚洲一区二区在线观看视频 | 综合欧美亚洲日本| 国产精品天美传媒沈樵| 成人免费小视频| 亚洲精品福利视频网站| 亚洲最新视频在线播放| 亚洲成a人片在线观看中文| 日日摸夜夜添夜夜添精品视频| 亚洲aaa精品| 成人性视频网站| 欧美三级电影网| 欧美日韩中文一区| 欧美大白屁股肥臀xxxxxx| 中文字幕av不卡| 亚洲成av人在线观看| 成人久久视频在线观看| 欧美日韩一区精品| 久久夜色精品一区| 日韩电影在线观看电影| 91在线你懂得| 日本一区二区三区久久久久久久久不 | 国产自产高清不卡| 欧美三区在线观看| 久久久青草青青国产亚洲免观| 亚洲成av人片www| 99re热这里只有精品视频| 精品1区2区在线观看| 一区二区在线观看视频在线观看| 九一久久久久久| 欧美精品自拍偷拍| 亚洲少妇中出一区| 欧美影视一区二区三区| 国产片一区二区三区| 国产一区二区精品在线观看| 精品av综合导航| 蜜桃视频在线观看一区| 在线播放日韩导航| 日韩va亚洲va欧美va久久| 欧美丝袜丝交足nylons| 一区二区欧美视频| 色婷婷综合激情| 中文字幕在线免费不卡| 成人av免费观看| 国产视频一区二区三区在线观看 | 17c精品麻豆一区二区免费| 国产成人a级片| 亚洲欧美视频在线观看| 日本高清无吗v一区| 亚洲成人在线观看视频| 日韩三级视频在线观看| 不卡的av在线| 蜜桃av一区二区在线观看| 国产精品女同一区二区三区| 91福利在线观看| 国内精品伊人久久久久av一坑| 欧美日本高清视频在线观看| 亚洲第一搞黄网站| 欧美一区二区三区四区久久| 蜜芽一区二区三区| 国产欧美日韩一区二区三区在线观看| 韩国一区二区三区|