亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
成人毛片老司机大片| 偷拍一区二区三区| 成人性生交大片免费看在线播放| 2014亚洲片线观看视频免费| 久久99精品久久久久久国产越南| 日韩欧美卡一卡二| 国产精品原创巨作av| 中文字幕一区二区三区蜜月| 色综合久久综合| 日韩成人av影视| 久久久噜噜噜久久人人看 | 精品一区二区av| 久久婷婷一区二区三区| 岛国精品在线观看| 亚洲精品中文在线影院| 欧美精品免费视频| 国产精品一色哟哟哟| 亚洲人成7777| 日韩你懂的在线观看| 成人av片在线观看| 亚洲综合一区在线| 精品欧美一区二区在线观看| 成人少妇影院yyyy| 亚洲成年人网站在线观看| 久久综合999| 在线免费观看日本一区| 国产综合色精品一区二区三区| 国产农村妇女毛片精品久久麻豆| 欧美在线999| 国产精品66部| 亚洲国产日日夜夜| 中文字幕成人网| 欧美裸体一区二区三区| 成人久久久精品乱码一区二区三区| 亚洲福利一区二区三区| 国产欧美一区二区三区鸳鸯浴 | 日韩欧美国产一区二区三区| 成人黄色a**站在线观看| 午夜久久久久久电影| 国产精品嫩草影院av蜜臀| 91精品欧美综合在线观看最新| 成人综合婷婷国产精品久久免费| 午夜精品久久久久久久蜜桃app | 日韩午夜在线观看视频| 97久久人人超碰| 国产精品影音先锋| 青青草91视频| 一卡二卡欧美日韩| 中文字幕一区av| 精品sm捆绑视频| 欧美人牲a欧美精品| 一本久久a久久免费精品不卡| 国产美女在线精品| 蜜臀精品一区二区三区在线观看| 亚洲卡通欧美制服中文| 国产精品免费视频观看| 久久久精品黄色| 日韩欧美黄色影院| 日韩一区二区三区观看| 欧美日韩在线播放| 欧美在线播放高清精品| 91老司机福利 在线| 成人av网站免费观看| 国产福利一区二区三区视频在线 | 蜜桃av噜噜一区| 日韩和的一区二区| 亚洲成av人在线观看| 亚洲精品久久久久久国产精华液| 国产精品欧美精品| 国产精品蜜臀在线观看| 亚洲欧洲国产专区| 国产精品久久毛片av大全日韩| 久久一夜天堂av一区二区三区| 精品日韩在线观看| 欧美电视剧免费观看| 日韩欧美黄色影院| 精品国精品国产| 久久伊人蜜桃av一区二区| 亚洲精品在线三区| 337p粉嫩大胆色噜噜噜噜亚洲| 欧美一区二区三区免费视频 | 亚洲精品乱码久久久久久黑人| 国产精品免费观看视频| 国产精品久久久久久久久图文区| 欧美国产在线观看| 国产欧美精品在线观看| 国产精品理论在线观看| 亚洲黄色录像片| 亚洲成人自拍网| 麻豆成人在线观看| 国产精品一色哟哟哟| aaa亚洲精品| 欧美日韩专区在线| 日韩欧美国产麻豆| 国产亚洲精品中文字幕| 中文字幕色av一区二区三区| 亚洲欧美偷拍另类a∨色屁股| 亚洲高清不卡在线观看| 久久精品国产99| 福利视频网站一区二区三区| 99麻豆久久久国产精品免费| 欧美亚洲国产一区在线观看网站| 欧美日韩国产精品自在自线| www久久久久| 亚洲人成精品久久久久久| 亚洲成人精品一区| 黄页视频在线91| aaa亚洲精品一二三区| 欧美日韩久久一区| 精品久久五月天| 国产精品不卡在线| 天堂在线亚洲视频| 国产成人在线免费| 欧美四级电影网| 欧美成人一区二区三区片免费 | 欧美高清性hdvideosex| 久久久另类综合| 亚洲国产视频一区| 粉嫩13p一区二区三区| 欧美丝袜第三区| 欧美高清在线视频| 日韩激情视频在线观看| 成人a区在线观看| 制服.丝袜.亚洲.另类.中文| 国产精品美女www爽爽爽| 天天综合网天天综合色| proumb性欧美在线观看| 91精品国产入口| 亚洲精品第1页| 欧美片在线播放| 国产女主播在线一区二区| 日韩电影一区二区三区四区| 99久久精品一区二区| 日韩欧美国产三级| 午夜电影一区二区三区| www.av亚洲| 国产欧美一区二区三区在线看蜜臀| 三级欧美在线一区| 色偷偷久久人人79超碰人人澡| www激情久久| 日本不卡中文字幕| 欧美网站一区二区| 亚洲素人一区二区| 成人免费精品视频| 久久久久久电影| 日韩va欧美va亚洲va久久| 日本韩国欧美在线| 亚洲色图欧洲色图婷婷| 国产mv日韩mv欧美| www国产精品av| 精品一区在线看| 欧美一级电影网站| 天堂va蜜桃一区二区三区漫画版 | 一本久久a久久精品亚洲| 久久精品人人做| 国产自产视频一区二区三区| 日韩免费一区二区| 免费高清在线一区| 欧美成va人片在线观看| 爽好多水快深点欧美视频| 精品视频全国免费看| 亚洲图片欧美色图| 精品视频在线免费观看| 亚洲午夜电影在线| 欧美日韩中文另类| 丝袜a∨在线一区二区三区不卡| 欧美日韩久久一区二区| 日韩电影免费一区| 日韩一级黄色大片| 免费在线观看不卡| 欧美变态tickle挠乳网站| 色综合久久久久综合体桃花网| 亚洲美女淫视频| 欧美伊人久久久久久午夜久久久久| 亚洲天堂成人在线观看| 欧美亚洲综合色| 肉肉av福利一精品导航| 欧美一区二区三区啪啪| 国产在线播放一区二区三区| 国产亚洲一区二区三区| 成人av一区二区三区| 一区二区三区 在线观看视频| 欧美亚洲动漫另类| 日本成人在线网站| 久久久综合网站| av在线不卡免费看| 亚洲国产精品尤物yw在线观看| 欧美精品高清视频| 国产成人亚洲精品青草天美| 最新国产の精品合集bt伙计| 欧美日韩久久一区二区| 国产在线一区二区综合免费视频| 国产日韩成人精品| 色先锋资源久久综合| 青娱乐精品视频| 国产午夜精品福利| 色成人在线视频| 久久黄色级2电影| 中文字幕中文字幕在线一区| 欧美久久久一区|