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

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

?? remoteadministrator.cpp

?? <Visual C++ 網絡程序設計實例詳解>配套源碼
?? 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;	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕av资源一区| 亚洲激情欧美激情| 国产亚洲精品bt天堂精选| 成人小视频在线| 日本免费新一区视频| 自拍偷自拍亚洲精品播放| 日韩三级伦理片妻子的秘密按摩| 99久久精品国产导航| 国内偷窥港台综合视频在线播放| 亚洲一区二区美女| 成人欧美一区二区三区在线播放| 欧美大片在线观看| 欧美视频一区在线观看| av成人老司机| 国产sm精品调教视频网站| 青青草视频一区| 亚洲五码中文字幕| 亚洲色图视频网| 国产精品网站导航| 久久久国产精品不卡| 日韩欧美二区三区| 欧美高清性hdvideosex| 色视频成人在线观看免| 成人av第一页| av毛片久久久久**hd| 国产精品一区二区果冻传媒| 麻豆免费精品视频| 天天av天天翘天天综合网| 亚洲精品国产无套在线观| 国产精品私人影院| 国产拍揄自揄精品视频麻豆| 精品成人私密视频| 精品理论电影在线| 精品国产污污免费网站入口| 日韩精品中文字幕在线不卡尤物 | 色婷婷av一区二区三区软件| 国产98色在线|日韩| 国产一区二区三区免费在线观看 | 国产在线国偷精品产拍免费yy | 亚洲一区二区三区四区在线 | 91国偷自产一区二区开放时间 | 91麻豆福利精品推荐| 成人av在线资源网站| 粉嫩av一区二区三区在线播放| 国产一区二区中文字幕| 国产成人午夜视频| 成人小视频免费观看| 99re这里只有精品视频首页| 91一区一区三区| 日本道免费精品一区二区三区| 在线视频国产一区| 欧美日韩高清影院| 日韩精品一区二区三区视频| 日韩制服丝袜先锋影音| 日韩精品免费专区| 黄色日韩网站视频| 成人午夜在线免费| 91福利国产成人精品照片| 777午夜精品免费视频| 日韩欧美一级特黄在线播放| 欧美成人一区二区三区在线观看| 2022国产精品视频| 国产精品家庭影院| 亚洲成人激情综合网| 青青国产91久久久久久| 国产精品资源站在线| 99久久精品国产网站| 欧美性猛交xxxxxx富婆| 日韩精品一区二区三区老鸭窝 | 日韩一区二区三区在线视频| 精品国产一区久久| 欧美国产一区二区| 一区二区激情小说| 精品综合久久久久久8888| gogo大胆日本视频一区| 欧美日韩aaa| 久久精品一区蜜桃臀影院| 国产精品毛片大码女人| 亚洲一区二区av电影| 精久久久久久久久久久| 91丨porny丨国产入口| 欧美一级高清片在线观看| 国产亚洲一区字幕| 一区二区三区欧美激情| 狠狠色2019综合网| 91高清视频免费看| 久久色.com| 亚洲第一主播视频| 国产69精品久久久久毛片| 在线看国产一区二区| 精品盗摄一区二区三区| 亚洲午夜激情av| 懂色av一区二区三区免费看| 欧美日韩国产bt| 中文字幕亚洲在| 久久99精品国产.久久久久| 在线欧美小视频| 国产欧美视频在线观看| 日韩精品一级中文字幕精品视频免费观看 | 久久久久久黄色| 亚洲国产综合91精品麻豆| 国产精品正在播放| 51精品国自产在线| 亚洲欧美日韩人成在线播放| 国产一区二区女| 91精品黄色片免费大全| 自拍偷拍国产精品| 国产精品一二三区| 日韩网站在线看片你懂的| 一区二区在线观看免费视频播放| 国产一区福利在线| 91精品国产麻豆| 亚洲一区二区三区四区在线免费观看| 成人性生交大合| 久久在线观看免费| 蜜桃视频在线一区| 欧美日韩亚洲综合一区 | 国产成人在线视频网址| 欧美一级xxx| 婷婷久久综合九色国产成人| 91免费在线视频观看| 国产人伦精品一区二区| 激情久久五月天| 欧美成人性战久久| 日本视频一区二区| 欧美日韩成人综合天天影院 | 国产风韵犹存在线视精品| 精品国产乱码久久久久久久久| 天天综合网 天天综合色| 欧美视频中文字幕| 亚洲中国最大av网站| 一本大道久久精品懂色aⅴ| 亚洲欧洲成人精品av97| 成人动漫一区二区| 中文字幕一区二区三区不卡| 成人免费视频视频| 国产精品久久夜| 99综合电影在线视频| 中文字幕一区二区三区乱码在线 | 欧美日本精品一区二区三区| 亚洲综合精品久久| 欧美日韩一区二区在线观看 | 日韩一区二区免费视频| 日本欧美大码aⅴ在线播放| 欧美一区二区大片| 久久成人麻豆午夜电影| 精品国产第一区二区三区观看体验| 日本不卡不码高清免费观看 | 亚洲人成精品久久久久| 91香蕉视频在线| 亚洲欧美激情一区二区| 欧美在线高清视频| 五月天中文字幕一区二区| 欧美一区二区三区免费| 久久99久久久久| 久久久久国产精品厨房| 99久久婷婷国产综合精品| 艳妇臀荡乳欲伦亚洲一区| 欧美女孩性生活视频| 老司机精品视频导航| 国产精品丝袜久久久久久app| av一本久道久久综合久久鬼色| 亚洲小说欧美激情另类| 日韩欧美高清dvd碟片| 成人永久aaa| 亚洲一二三四在线| 日韩午夜在线影院| 成人免费观看av| 亚洲午夜精品久久久久久久久| 日韩免费一区二区| 韩国精品久久久| ...中文天堂在线一区| 欧美久久久久中文字幕| 国精品**一区二区三区在线蜜桃| 国产精品久久免费看| 欧美日韩国产影片| 国产99久久久国产精品潘金| 一区二区三区精品在线| 欧美刺激午夜性久久久久久久| av午夜一区麻豆| 麻豆国产精品777777在线| 国产精品区一区二区三区| 欧美日韩一区久久| 成人av电影在线播放| 日本女优在线视频一区二区| 国产精品成人免费精品自在线观看| 欧洲av一区二区嗯嗯嗯啊| 国产伦精品一区二区三区视频青涩| **欧美大码日韩| 久久天天做天天爱综合色| 欧美亚洲综合色| 成人av一区二区三区| 六月丁香婷婷久久| 成人激情黄色小说| 美腿丝袜亚洲三区| 一区二区三区欧美亚洲| 国产亚洲欧美日韩日本| 91精品国产入口在线| 在线一区二区三区四区五区 | 3d动漫精品啪啪|