⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 remoteadministrator.h

📁 vc++网络程序设计实例详解 人民邮电出版社1-2章源码
💻 H
字号:
#ifndef REMOTEADMINISTRATOR_H
#define REMOTEADMINISTRATOR_H

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <afxtempl.h>
#include "MachineInfo.h"

typedef CTypedPtrList<CPtrList, CString*>      CConnectionPendingList;
typedef CTypedPtrList<CPtrList, CMachineInfo*> CMachineInfoList;

#define  REMOTE_ADMIN_SERVICE              _T("RemoteAdminService")
#define  REMOTE_ADMIN_SERVICE_EXE          _T("RemoteAdminService.exe")
#define  REMOTE_ADMIN_SERVICE_PIPE         _T("RemoteAdminServivePipe")
#define  SERVICENAME                       _T("RemoteAdminService")
#define  LONGSERVICENAME                   _T("RemoteAdminService")
#define  REMOTE_ADMIN_PIPE                 _T("RempteAdminPipe")
#define  REMOTE_ADMIN_PROCESS_INFO_PIPE    _T("RemoteAdminProcessInfoPipe")
#define  REMOTE_ADMIN_PROCESS_EXECUTE_PIPE _T("RemoteAdminProcessExecutePipe")
#define  REMOTE_ADMIN_PROCESS_KILL_PIPE    _T("RemoteAdminProcessKillPipe")
#define  REMOTE_ADMIN_SYS_SHUTDOWN_PIPE    _T("RemoteAdminSysShutDownPipe")
 

class CRemoteAdministrator  
{
public:
	CRemoteAdministrator();
	virtual ~CRemoteAdministrator();

    BOOL EstablishAllConnections(CString strRemoteMachineIP, CString strPwd, BOOL bEstablish);
    void AddMachine(CMachineInfo& miMachineInfo);
    void DeleteMachine(CMachineInfo& miMachineInfo);
    BOOL CheckIfMachinePresent(CString strIP);
    void RefreshProcessList(CString strIP, CProcessInfoList& pilProcessList);
    CMachineInfo* GetMachineInfo(CString strIP);
    BOOL CopyServiceExeToRemoteMachine(CString strRenoteMachineIP);
    BOOL ConnectToRemoteService(CString strRemoteMachineIP, DWORD dwRetry, DWORD dwRetryTimeOut);
    BOOL InstallAndStartRemoteService(CString strRemoteMachineIP);
    CProcessInfoList* GetProcessInfoList(CString strRemoteMachineIP);
    void DeleteAndDisconnectAllMachines();
    void DeleteAndDisconnectMachine(CString strRemoteAdminMachine);
    void GetConnectedMachinesIP(CString** pstrConnctedMachinesIP /*out*/, int* piNumberOfConnectedMachines/*out*/);
    int GetTotalMachinesMonitored();
    BOOL AddToConnectionPendingList(CString strIP);
    BOOL RemoveFromConnecionPendingList(CString strIP);
    BOOL IsConnectionPending(CString strIP);

    HANDLE GetRemoteAdminPipe(CString strRemoteMachineIP);
    HANDLE GetRemoteAdminProcessInfoPipe(CString strRemoteMachineIP);
    HANDLE GetRemoteAdminProcessExecutePipe(CString strRemoteMachineIP);
    HANDLE GetRemoteAdminProcessKillPipe(CString strRemoteMachineIP);
    HANDLE GetRemoteAdminSysShutDownPipe(CString strRemoteMachineIP);
	CString GetPassword(CString strIP);
	UINT GetNumberOfMachineConnectionsStillInProgress();
	CString GetComputerNameFromIP(CString& strIP);
	CString GetComputerIPFromName(CString& strComputerName);
    
protected:
    CMachineInfoList m_milConnectedMachines;
    CConnectionPendingList m_cplPendingConnectionList;

    HANDLE m_hCommandPipe; 
    BOOL EstablishAdminConnection(CString strRemoteMachineIP, CString strPwd, BOOL bEstablish);
    BOOL EstablishIPCConnection(CString strRemoteMachineIP, CString strPwd, BOOL bEstablish);
    BOOL EstablishConnection(CString strResource, CString strLogon, CString strRemoteMachineIP, CString strPwd, BOOL bEstablish);
};


inline HANDLE CRemoteAdministrator::GetRemoteAdminPipe(CString strRemoteMachineIP)
{
    CMachineInfo* pMachineInfo = GetMachineInfo(strRemoteMachineIP);

    if (pMachineInfo != NULL)
        return pMachineInfo->GetRemoteAdminPipe();
    else
        return NULL;
}

inline HANDLE CRemoteAdministrator::GetRemoteAdminProcessInfoPipe(CString strRemoteMachineIP)
{
    CMachineInfo* pMachineInfo = GetMachineInfo(strRemoteMachineIP);

    if (pMachineInfo != NULL)
        return pMachineInfo->GetRemoteAdminProcessInfoPipe();
    else
        return NULL;
}

inline HANDLE CRemoteAdministrator::GetRemoteAdminProcessExecutePipe(CString strRemoteMachineIP)
{
    CMachineInfo* pMachineInfo = GetMachineInfo(strRemoteMachineIP);
    
    if (pMachineInfo != NULL)
       return pMachineInfo->GetRemoteAdminProcessExecutePipe();
    else
      return NULL;
}

inline HANDLE CRemoteAdministrator::GetRemoteAdminProcessKillPipe(CString strRemoteMachineIP)
{
    CMachineInfo* pMachineInfo = GetMachineInfo(strRemoteMachineIP);

    if (pMachineInfo != NULL)
        return pMachineInfo->GetRemoteAdminProcessKillPipe();
    else
        return NULL;
}

inline HANDLE CRemoteAdministrator::GetRemoteAdminSysShutDownPipe(CString strRemoteMachineIP)
{
    CMachineInfo* pMachineInfo = GetMachineInfo(strRemoteMachineIP);

    if (pMachineInfo != NULL)
        return pMachineInfo->GetRemoteAdminSysShutDownPipe();
    else
        return NULL;
}

#endif // REMOTEADMINISTRATOR_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -