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

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

?? remoteadministrator.cpp

?? <Visual C++ 網(wǎng)絡(luò)程序設(shè)計實例詳解>配套源碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
        strRemoteMachineIP.GetBuffer(0), 
        REMOTE_ADMIN_PROCESS_EXECUTE_PIPE
        );

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

    // Remote shutdown pipe
    ::sprintf(
        szRemoteAdminSysShutdownPipe,
        _T("\\\\%s\\pipe\\%s"), 
        strRemoteMachineIP.GetBuffer(0), 
        REMOTE_ADMIN_SYS_SHUTDOWN_PIPE
        );


    SECURITY_ATTRIBUTES SecAttrib = {0};
    SECURITY_DESCRIPTOR SecDesc;
    ::InitializeSecurityDescriptor(&SecDesc, SECURITY_DESCRIPTOR_REVISION);
    ::SetSecurityDescriptorDacl(&SecDesc, TRUE, NULL, TRUE);

    SecAttrib.nLength = sizeof(SECURITY_ATTRIBUTES);
    SecAttrib.lpSecurityDescriptor = &SecDesc;;
    SecAttrib.bInheritHandle = TRUE;

    // Connects to the remote service's communication pipe
    while(dwRetry--)
    {
        if (::WaitNamedPipe(szRemoteAdminPipeName, 5000))
        {
            hCommandPipe = ::CreateFile( 
                                 szRemoteAdminPipeName,
                                 GENERIC_WRITE | GENERIC_READ, 
                                 0,
                                 &SecAttrib, 
                                 OPEN_EXISTING, 
                                 FILE_ATTRIBUTE_NORMAL, 
                                 NULL
                                 );

             ::CloseHandle(hCommandPipe);  

             CMachineInfo* pMachineInfo = GetMachineInfo(strRemoteMachineIP);
             //pMachineInfo->SetRemoteAdminPipe(hCommandPipe);

             ::Sleep(10000);
             if (::WaitNamedPipe(szRemoteAdminProcessInfoPipeName, 5000))
             {
                 hCommandPipe = ::CreateFile( 
                                 szRemoteAdminProcessInfoPipeName,
                                 GENERIC_WRITE | GENERIC_READ, 
                                 0,
                                 &SecAttrib, 
                                 OPEN_EXISTING, 
                                 FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, 
                                 NULL
                                 );

                 pMachineInfo->SetRemoteAdminProcessInfoPipe(hCommandPipe);
             }

             if (::WaitNamedPipe(szRemoteAdminProcessExecutePipeName, 5000))
             {
                 hCommandPipe = ::CreateFile( 
                                 szRemoteAdminProcessExecutePipeName,
                                 GENERIC_WRITE | GENERIC_READ, 
                                 0,
                                 &SecAttrib, 
                                 OPEN_EXISTING, 
                                 FILE_ATTRIBUTE_NORMAL, 
                                 NULL
                                 );

                 pMachineInfo->SetRemoteAdminProcessExecutePipe(hCommandPipe);
             }

             if (::WaitNamedPipe(szRemoteAdminProcessKillPipeName, 5000))
             {
                 hCommandPipe = ::CreateFile( 
                                 szRemoteAdminProcessKillPipeName,
                                 GENERIC_WRITE | GENERIC_READ, 
                                 0,
                                 &SecAttrib, 
                                 OPEN_EXISTING, 
                                 FILE_ATTRIBUTE_NORMAL, 
                                 NULL
                                 );

                 pMachineInfo->SetRemoteAdminProcessKillPipe(hCommandPipe);
             }

             if (::WaitNamedPipe(szRemoteAdminSysShutdownPipe, 5000))
             {
                 hCommandPipe = ::CreateFile( 
                                 szRemoteAdminSysShutdownPipe,
                                 GENERIC_WRITE | GENERIC_READ, 
                                 0,
                                 &SecAttrib, 
                                 OPEN_EXISTING, 
                                 FILE_ATTRIBUTE_NORMAL, 
                                 NULL
                                 );

                 pMachineInfo->SetRemoteAdminSysShutDownPipe(hCommandPipe);
             }

            
             break;
         }
         else
         {
             // Let's try it again
             ::Sleep(dwRetryTimeOut);
         }
    }

    return hCommandPipe != INVALID_HANDLE_VALUE;
}

BOOL CRemoteAdministrator::InstallAndStartRemoteService(CString strRemoteMachineIP)
{
    // Open remote Service Manager
    SC_HANDLE hSCM = ::OpenSCManager(
                         strRemoteMachineIP.GetBuffer(0), 
                         NULL, 
                         SC_MANAGER_ALL_ACCESS
                         );

    if (hSCM == NULL)
    {
        return FALSE;
    }
      
   
    // Maybe it's already there and installed, let's try to run
    SC_HANDLE hService =::OpenService(hSCM, SERVICENAME, SERVICE_ALL_ACCESS);

    // Creates service on remote machine, if it's not installed yet
    if (hService == NULL)
    {
        hService = ::CreateService(
                        hSCM, 
                        SERVICENAME, 
                        LONGSERVICENAME,
                        SERVICE_ALL_ACCESS, 
                        SERVICE_WIN32_OWN_PROCESS,
                        SERVICE_DEMAND_START, 
                        SERVICE_ERROR_NORMAL,
                        _T("%SystemRoot%\\system32\\")REMOTE_ADMIN_SERVICE_EXE,
                        NULL, 
                        NULL, 
                        NULL, 
                        NULL, 
                        NULL
                        );
    }
      
   
    if (hService == NULL)
    {
        ::CloseServiceHandle(hSCM);
        return FALSE;
    }

    // Start service
    if (!::StartService(hService, 0, NULL))
    {
        return FALSE;
    }

    ::CloseServiceHandle(hService);
    ::CloseServiceHandle(hSCM);

    return TRUE;
}

CProcessInfoList* CRemoteAdministrator::GetProcessInfoList(CString strRemoteMachineIP)
{
    CMachineInfo* pMachineInfo = GetMachineInfo(strRemoteMachineIP);
    
    return pMachineInfo->GetProcessInfoList();
}

void CRemoteAdministrator::DeleteAndDisconnectAllMachines()
{
    CMachineInfo* pMachineInfo = NULL;

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

        // Tell server threads to end
        pMachineInfo->SendEndThreadMessage();
        
        // Close the pipe handles
        pMachineInfo->ClosePipeHandles();

        // End the connection
        EstablishAllConnections(pMachineInfo->GetIP(), pMachineInfo->GetPassword(), FALSE);

        // Free memory 
        delete pMachineInfo;
    }

    m_milConnectedMachines.RemoveAll();
}

void CRemoteAdministrator::DeleteAndDisconnectMachine(CString strRemoteAdminMachine)
{
    CMachineInfo* pMachineInfo = GetMachineInfo(strRemoteAdminMachine);

	if (pMachineInfo)
	{
		pMachineInfo->SendEndThreadMessage();
		pMachineInfo->ClosePipeHandles();
		BOOL bConnectionDeleted = EstablishAllConnections(pMachineInfo->GetIP(), pMachineInfo->GetPassword(), FALSE);
        DeleteMachine(*pMachineInfo);
	}
}


void CRemoteAdministrator::GetConnectedMachinesIP(CString** pstrConnctedMachinesIP/*out*/, int* piNumberOfConnectedMachines /*out*/)
{
	::EnterCriticalSection(&g_CriticalSection);
    // Get the number of machines
    *piNumberOfConnectedMachines = m_milConnectedMachines.GetCount();

    // Allocate array of CStrings to hold IP of these machines
    *pstrConnctedMachinesIP = new CString[*piNumberOfConnectedMachines];

    // Now loop throught the machine info list and upadte the IP array
    CMachineInfo* pMachineInfo = NULL;
    POSITION pos = m_milConnectedMachines.GetHeadPosition();
    int iIndex = 0;
    while (pos != (POSITION)0xcdcdcdcd && pos != NULL)
    {
        pMachineInfo = m_milConnectedMachines.GetNext(pos);
        (*pstrConnctedMachinesIP)[iIndex] = pMachineInfo->GetIP();
        ++iIndex;
    }
	::LeaveCriticalSection(&g_CriticalSection);
}

int CRemoteAdministrator::GetTotalMachinesMonitored()
{
    return m_milConnectedMachines.GetCount();
}

BOOL CRemoteAdministrator::AddToConnectionPendingList(CString strIP)
{
    CString* pstrPendinConnectionIP = new CString;
    if (pstrPendinConnectionIP != NULL)
    {
        *pstrPendinConnectionIP = strIP;
        m_cplPendingConnectionList.AddTail(pstrPendinConnectionIP);

        return TRUE;
    }

    return FALSE;
}

BOOL CRemoteAdministrator::RemoveFromConnecionPendingList(CString strIP)
{
    POSITION pos = m_cplPendingConnectionList.GetHeadPosition();

    while (pos != (POSITION)0xcdcdcdcd && pos != NULL)
    {
        CString* pstrIP = m_cplPendingConnectionList.GetAt(pos);

        if (*pstrIP == strIP)
        {
            m_cplPendingConnectionList.RemoveAt(pos);

            delete pstrIP;

            return TRUE;
        }

        m_cplPendingConnectionList.GetNext(pos);
    }

    return FALSE;
}

BOOL CRemoteAdministrator::IsConnectionPending(CString strIP)
{
    POSITION pos = m_cplPendingConnectionList.GetHeadPosition();

    while (pos != (POSITION)0xcdcdcdcd && pos != NULL)
    {
        CString* pstrIP = m_cplPendingConnectionList.GetNext(pos);

        if (*pstrIP == strIP)
        {
             return TRUE;
        }
    }

    return FALSE;
}

CString CRemoteAdministrator::GetPassword(CString strIP)
{
	CMachineInfo* pMachineInfo = GetMachineInfo(strIP);

	ASSERT(pMachineInfo != NULL);

	if (pMachineInfo != NULL)
	{
		return pMachineInfo->GetPassword();
	}
	else
	{
		return _T("Could not retrieve the password");
	}
}

UINT CRemoteAdministrator::GetNumberOfMachineConnectionsStillInProgress()
{
	return m_cplPendingConnectionList.GetCount();
}


CString CRemoteAdministrator::GetComputerNameFromIP(CString& strIP)
{
	unsigned long ulAddr = ::inet_addr(LPCTSTR(strIP));
	CString strHostName = _T("0");

	if (ulAddr != INADDR_NONE)  // Valid IP address passed, hence could resolve address
	{
		HOSTENT* pHostEnt    = ::gethostbyaddr((char*)&ulAddr, sizeof(ulAddr), AF_INET);
		if (pHostEnt != NULL)
		{
			strHostName = pHostEnt->h_addr;

			return strHostName;
		}
	}

	ASSERT(NULL); // Shouldn't reach here, if Winsock initialized properly
    return strHostName;	
}


CString CRemoteAdministrator::GetComputerIPFromName(CString& strComputerName)
{
	unsigned long ulAddr = ::inet_addr(LPCTSTR(strComputerName));
	CString strIP = _T("0");

	if (ulAddr == INADDR_NONE) // Not a valid IP in dotted format, so can be a string
	{
		HOSTENT* pHostEnt = ::gethostbyname((LPCTSTR)(strComputerName));
		if (pHostEnt != NULL)
		{
			in_addr* addr = (in_addr*)pHostEnt->h_addr_list[0]; 
			
			int ip1 = addr->S_un.S_un_b.s_b1;
            int ip2 = addr->S_un.S_un_b.s_b2;
            int ip3 = addr->S_un.S_un_b.s_b3;
            int ip4 = addr->S_un.S_un_b.s_b4;

			strIP.Format("%d.%d.%d.%d", ip1, ip2, ip3, ip4);
			return strIP;
		}
	}

	ASSERT(NULL); // Shouldn't reach here, if Winsock initialized properly
    return strIP;	
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情小说欧美图片| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 国产一区二区三区免费看| 91在线视频免费观看| 日韩视频在线观看一区二区| 一区二区三区欧美在线观看| 国产成人免费视频网站高清观看视频| 欧美日韩激情一区二区| 最新国产成人在线观看| 国产精品自拍一区| 欧美成人伊人久久综合网| 性做久久久久久免费观看欧美| 不卡欧美aaaaa| 欧美激情一区不卡| 国产91精品精华液一区二区三区| 日韩精品一区二区三区老鸭窝| 亚洲成a天堂v人片| 欧美三级在线看| 一级特黄大欧美久久久| 91蜜桃网址入口| 最新欧美精品一区二区三区| 成人app在线| 亚洲视频一区二区免费在线观看 | 久久综合精品国产一区二区三区| 香港成人在线视频| 欧美亚洲国产一区在线观看网站| 中文字幕日韩精品一区| 99久久婷婷国产综合精品| 日本一区二区免费在线| 国产成a人亚洲精| 欧美激情在线一区二区| a在线播放不卡| 亚洲视频在线观看一区| 91在线你懂得| 亚洲电影欧美电影有声小说| 欧美日韩国产123区| 日韩精品乱码免费| 精品国产91乱码一区二区三区| 久久99精品网久久| 国产免费观看久久| 色网综合在线观看| 亚洲福利一区二区| 日韩一区二区精品| 国产大陆亚洲精品国产| 日韩一区欧美一区| 欧美乱熟臀69xxxxxx| 精品亚洲aⅴ乱码一区二区三区| 亚洲精品一区二区三区99| 国产成人精品免费看| 亚洲欧美日韩在线播放| 欧美日韩精品一区二区三区四区 | 欧美xxxxx裸体时装秀| 国产乱国产乱300精品| 国产精品久久久99| 欧美猛男超大videosgay| 久久精品免费观看| 欧美国产日本韩| 欧美在线不卡视频| 精品在线播放午夜| 亚洲色图.com| 日韩亚洲欧美成人一区| 成人av在线播放网址| 午夜精品影院在线观看| 久久新电视剧免费观看| 91免费观看在线| 国产呦精品一区二区三区网站| 亚洲日本电影在线| 欧美大片在线观看一区二区| 91玉足脚交白嫩脚丫在线播放| 免费看黄色91| 亚洲男帅同性gay1069| 欧美成人国产一区二区| 91福利资源站| 国产**成人网毛片九色| 午夜日韩在线电影| 中文字幕日本不卡| 久久这里只有精品首页| 在线视频欧美区| 成人免费看片app下载| 日韩和欧美一区二区| 中文字幕在线不卡视频| 久久久久一区二区三区四区| 欧美中文字幕不卡| av影院午夜一区| 国内外精品视频| 奇米影视一区二区三区小说| 伊人夜夜躁av伊人久久| 国产日产欧美一区二区三区| 日韩一级二级三级| 欧美群妇大交群中文字幕| 97久久精品人人做人人爽50路| 国产美女在线精品| 青青草一区二区三区| 亚洲gay无套男同| 亚洲精品国产成人久久av盗摄 | 777亚洲妇女| 一本色道久久综合亚洲aⅴ蜜桃| 国产成人午夜精品影院观看视频| 青青草国产成人av片免费| 亚洲一区二区三区在线看| 亚洲国产精品ⅴa在线观看| 久久久综合精品| 欧美mv和日韩mv的网站| 日韩视频免费观看高清完整版| 91黄色小视频| 在线观看成人免费视频| 欧美在线一二三| 欧美日韩在线直播| 欧美色图免费看| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 99久久精品国产观看| 成人app网站| 色婷婷久久久综合中文字幕| 97成人超碰视| 色噜噜狠狠色综合中国| 欧美在线|欧美| 欧美日韩成人在线| 91精品欧美一区二区三区综合在 | 老司机一区二区| 久久成人18免费观看| 国产一区二区三区在线看麻豆| 国内精品第一页| 成人av午夜电影| 色综合久久66| 欧美精选午夜久久久乱码6080| 7777精品伊人久久久大香线蕉经典版下载 | 91福利社在线观看| 欧美日韩久久不卡| 精品日韩一区二区三区免费视频| 精品少妇一区二区三区日产乱码| 国产亚洲欧美激情| 中文av一区二区| 一区二区三区不卡视频| 视频一区二区三区中文字幕| 久久99精品一区二区三区| 成人免费视频视频| 欧美三级一区二区| 欧美大胆人体bbbb| 亚洲天堂福利av| 视频一区欧美精品| 国产91高潮流白浆在线麻豆| 色婷婷av久久久久久久| 6080日韩午夜伦伦午夜伦| 久久精品网站免费观看| 一区二区三区在线免费| 久久99蜜桃精品| 色哟哟精品一区| 欧美精品一区二区三区很污很色的 | 国产精品卡一卡二| 午夜精品一区在线观看| 国产高清不卡二三区| 91麻豆蜜桃一区二区三区| 日韩午夜在线播放| 亚洲人成精品久久久久久| 久久99国产精品免费| 91影视在线播放| 欧美va亚洲va| 亚洲成人tv网| 波多野结衣亚洲| 欧美mv和日韩mv的网站| 亚洲综合另类小说| 成人精品在线视频观看| 日韩欧美一二三四区| 亚洲综合激情小说| 成人国产精品免费观看视频| 欧美一级高清片| 亚洲一区在线观看视频| 成人动漫av在线| 欧美精品一区二区三区久久久| 一区二区三区精品视频在线| 成人做爰69片免费看网站| 日韩一区二区三区av| 亚洲一二三区不卡| 色哦色哦哦色天天综合| 国产精品麻豆视频| 国产露脸91国语对白| 欧美成人免费网站| 日韩在线观看一区二区| 色欧美日韩亚洲| 亚洲美女在线一区| 成人动漫一区二区三区| 国产亚洲欧美色| 国产传媒一区在线| 久久综合色婷婷| 精品写真视频在线观看| 日韩一区二区三区在线观看| 首页国产欧美日韩丝袜| 欧美日韩国产欧美日美国产精品| 亚洲另类在线视频| 91亚洲精品一区二区乱码| 中文字幕日韩一区二区| www.成人网.com| 亚洲三级在线播放| 91视频免费播放| 有码一区二区三区| 欧美系列一区二区| 视频一区中文字幕国产| 欧美一区二区三区免费在线看| 日韩电影在线免费| 欧美一卡二卡三卡|