当前位置 主页 > 服务器问题 > win服务器问题汇总 >

    c#实现windows远程桌面连接程序代码

    栏目:win服务器问题汇总 时间:2019-10-13 08:53

    使用winform制作windows远程桌面连接程序,windows自带了远程桌面连接,我们需要将远程桌面连接集成

    到自己的winform程序,并实现管理远程主机的配置。

    远程桌面核心类库

    windows系统自带了远程桌面activex dll,目录:

    c:\Windows\System32\mstscax.dll

    此类库无法使用c#直接调用,介绍一个工具AxImp.exe

    AxImp.exe

    https://msdn.microsoft.com/zh-cn/library/8ccdh774(VS.80).aspx

    ActiveX 控件导入程序将 ActiveX 控件的 COM 类型库中的类型定义转换为 Windows 窗体控件。

    控件转换

    在cmd输入以下命令

    "c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\AxImp.exe" "c:\Windows\System32\mstscax.dll"

    即可生成AxMSTSCLib.dll,MSTSCLib.dll

    远程桌面连接核心代码

    //远程连接核心方法
    private AxMSTSCLib.AxMsRdpClient7 rdpc = null;
    protected void OnCreateControl()
    {
      rdpc = new AxMSTSCLib.AxMsRdpClient7();
      rdpc.OnDisconnected += new AxMSTSCLib.IMsTscAxEvents_OnDisconnectedEventHandler(rdpc_OnDisconnected);
      this.Controls.Add(rdpc);
      rdpc.Dock = DockStyle.Fill;
      rdpc.BringToFront();
    }
    
    void rdpc_OnDisconnected(object sender, AxMSTSCLib.IMsTscAxEvents_OnDisconnectedEvent e)
    {
      //处理断开连接
    }
    
    
    public void Disconnect()
    {
      try
      {
        if (rdpc.Connected == 1)
        {
          rdpc.Disconnect();
        }
      }
      catch (Exception)
      {
    
      }
    
    }
    
    private void SetRdpClientProperties(Machine parMachine)
    {
      rdpc.Server = parMachine.MachineName;
      rdpc.AdvancedSettings2.RDPPort = parMachine.Port;
      rdpc.UserName = parMachine.UserName;
      rdpc.Domain = parMachine.DomainName;
      if (parMachine.Password != "")
      {
        rdpc.AdvancedSettings5.ClearTextPassword = parMachine.Password;
      }
      rdpc.AdvancedSettings5.RedirectDrives = parMachine.ShareDiskDrives;
      rdpc.AdvancedSettings5.RedirectPrinters = parMachine.SharePrinters;
      rdpc.ColorDepth = (int)parMachine.ColorDepth;
    }
    
    public void Connect(Machine parMachine)
    {
      SetRdpClientProperties(parMachine);
      rdpc.Connect();
    }
    
    //远程主机配置
    [Serializable()]
    public class Machine
    {
      private string _RemoteDesktopConnectionName;
      public string RemoteDesktopConnectionName
      {
        get { return _RemoteDesktopConnectionName; }
        set { _RemoteDesktopConnectionName = value; }
      }
    
      private string _MachineName;
      public string MachineName
      {
        get { return _MachineName; }
        set { _MachineName = value; }
      }
      private string _DomainName;
      public string DomainName
      {
        get { return _DomainName; }
        set { _DomainName = value; }
      }
    
      private string _UserName;
      public string UserName
      {
        get { return _UserName; }
        set { _UserName = value; }
      }
    
      private string _Password;
      public string Password
      {
        get { return _Password; }
        set { _Password = value; }
      }
    
      private bool _AutoConnect;
      public bool AutoConnect
      {
        get { return _AutoConnect; }
        set { _AutoConnect = value; }
      }
    
      private bool _ShareDiskDrives;
      public bool ShareDiskDrives
      {
        get { return _ShareDiskDrives; }
        set { _ShareDiskDrives = value; }
      }
    
      private bool _SharePrinters;
      public bool SharePrinters
      {
        get { return _SharePrinters; }
        set { _SharePrinters = value; }
      }
    
      private bool _SavePassword;
      public bool SavePassword
      {
        get { return _SavePassword; }
        set { _SavePassword = value; }
      }
    
      private Colors _ColorDepth;
      public Colors ColorDepth
      {
        get { return _ColorDepth; }
        set { _ColorDepth = value; }
      }
    
      public int Port
      {
        get
        {
          return _Port;
        }
    
        set
        {
          _Port = value;
        }
      }
    
      private int _Port;
    
    
      public enum Colors
      {
        HighColor15 = 15,
        HighColor16 = 16,
        Color256 = 8,
        TrueColor = 24
      }
    }