Giter Site home page Giter Site logo

msrdpex's Introduction

Microsoft RDP Extensions (MsRdpEx)

The official Microsoft RDP client is the only one with an exhaustive implementation of the entire feature set. While FreeRDP is open source and available on all platforms, most vendors offering RDP support on Windows use the Microsoft RDP ActiveX interface instead. The solution is not to choose between FreeRDP and the Microsoft ActiveX, but to support them both while extending the Microsoft RDP client. In addition to this, Microsoft has been pushing for its "modern" remote desktop client (msrdc.exe) over the "classic" terminal services client (mstsc.exe) without providing the means to fully migrate to it. While both remote desktop clients use essentially the same RDP engine, they have multiple differences and limitations imposed by their user interfaces.

Getting Started

From a Visual Studio developer shell, build the Detours library. Repeat the process once per target architecture (x64, arm64):

Enter-VsDevShell x64
.\detours.ps1

Generate the Visual Studio project files for your target platform (x64, ARM64):

mkdir build-x64 && cd build-x64
cmake -G "Visual Studio 17 2022" -A x64 ..

You can open the Visual Studio solution or build it from the command-line:

cmake --build . --config Release

In Visual Studio, launch the MsRdpEx_App C# application to test the ActiveX C# interface, and MsRdpEx_Exe to launch mstsc.exe or msrdc.exe with injection of MsRdpEx.dll.

Microsoft RDP clients

We have recently confirmed that the modern RDP client core (rdclientax.dll) is binary-compatible with the RDP client classic core (mstscax.dll). The first goal of this project is to make it easier for third-party vendors to selectively load the ActiveX interfaces from either one of them, at runtime, for projects written in C or C#.

The second goal is to make it easier to launch msrdc.exe as a replacement of mstsc.exe, and avoid many of the issues that affect the window size handling. The biggest problem is that msrdc.exe doesn't have a GUI, and the one provided with the modern remote desktop client can't be used for direct RDP connectivity.

mstsc.exe / mstscax.dll

The Microsoft Terminal Services Client (mstsc.exe) is the built-in RDP client that most people in the industry are familiar with. It has a simple user interface that can be used to select a few RDP options and then connect to the RDP server of your choice. Since it is shipped as part of Windows, it has a long release cycle. The Microsoft RDP ActiveX interface is contained in mstscax.dll, the companion DLL to mstsc.exe.

msrdc.exe / rdclientax.dll

The Microsoft Remote Desktop Client (msrdc.exe) is the modern RDP client that is now shipped separately from Windows, and therefore has a faster release cycle. Unlike mstsc.exe, msrdc.exe only accepts .RDP files to launch new connections - the GUI is provided by its companion executable, msrdcw.exe. Unfortunately, the msrdcw.exe user interface is extremely limited: you can only subscribe to Azure Virtual Desktop web feeds and launch RDP connections from it. The rdclientax.dll companion DLL contains the same ActiveX interfaces as mstscax.dll with the exception that it is shipped separately from Windows.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.