Remote Desktop client URI scheme Applies to: Windows 10, Windows 8.1, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2 You can control a remote PC by using a Microsoft Remote Desktop client. The client can run on almost any device, including on your mobile smartphone. Remote Desktop can be secured using SSL/TLS in Windows Vista, Windows 7, Windows 8, Windows 10 and Windows Server 2003/2008/2012/2016.Some systems listed are no longer supported by Microsoft and therefore do not meet Campus security standards.
Hello, I am cedrozor the author of Myrtille, a project that started in 2007 as a challenge for fun with former work colleagues, on our spare time. The goal was to provide a native web access, for a simplified user experience, to remote servers and applications. We wanted legacy desktop applications to be as easy to use as a website, accessible from a single URL, making them literally “web apps”.
It was originally the idea of UltraSam, the author of UltraVNC (another well known open source project), who was before that my project manager in a teleconferencing company based in France. But instead of the VNC protocol, we focused more on RDP because the rest of the team (including me) was more into .NET/C# development and we wanted something new in the Windows environment. That said, Myrtille relies on an abstraction layer and could easily integrate VNC or any other protocol (as it was done with SSH).
We started with RDesktop, but moved quickly to FreeRDP when it was released! :)
I have tried to keep the Myrtille footprint into FreeRDP as minimal as possible. Myrtille communicates with FreeRDP through named pipes (IPC), in order to maintain a FIFO data transfer. User inputs (keyboard, mouse, touchscreen, etc.) are captured by the browser (using javascript) and forwarded through the RDP session, while display updates (regions of the screen that have changed) are compressed into PNG, JPEG or WEBP images and sent to the browser (using websocket, server-sent events (HTML5) or even long-polling (HTML4)).
Because FreeRDP is a big project, I wanted an easy way to track the Myrtille code within it (whenever I couldn’t have it into separate files). Thus, all the Myrtille code is surrounded by “#pragma region Myrtille” and “#pragma endregion” tags. This is very handy when I need to resynchronize the Myrtille fork of FreeRDP with the FreeRDP repository! Because, of course, I want Myrtille to benefit from the latest features, optimizations and bug fixes from FreeRDP! :) in this process, I may also find and fix bugs in FreeRDP, then inform the FreeRDP team.
In an earlier version (0.9.x), The Windows FreeRDP client (wfreerdp) was written in C++. It’s possible to mix C and C++ code in a single project, so I was able to keep most of the code I wrote years ago and benefit from some C++ improvements over C (OOP, GDI+ image processing, etc.).
I also wanted to have a clean separation of concern between Myrtille and FreeRDP, so each RDP connection spawns a FreeRDP process. This makes it easier to track all active connections and if necessary disconnect one by killing its process.
From the start we decided that we didn’t want any plugin, extension or whatsoever in the browser. It would be a pure HTML/JS/CSS implementation. We also wanted to avoid javascript libraries whenever possible (and reasonable), to avoid useless (and countless) dependencies and keep the code low profiled. For simple tasks (and Myrtille doesn’t require/do anything fancy), I think it’s fine (and even good) to simply use vanilla javascript. Javascript is a powerful language, constantly evolving, and I have fun learning and harnessing it. I’m also a minimalist person who loves to get its hands dirty in the engine to see how things work on a lower level! :p
It was even more difficult back in time (2007), because websockets and canvas (HTML5) weren’t available. We had to rely on XmlHttp requests, long polling and divs (HTML 4), with of course different implementations in different browsers (no typescript back then). IE was still widely used at this time, so we wanted our PoC to run on the first version that supported XmlHttp, namely IE6 (to add even more difficulty!).
That said, that was before SignalR was available to abstract and simplify network communication (automatic and transparent switching of protocols in case one of them is not available or fails). If Myrtille were to start today, I would of course make use of it (in addition to a few other libraries). Another thing I would do would be to use .NET core and the latest new stuff, in order to take Myrtille forward in the future and also have it on multiple platforms (using xfreerdp on Linux, for example). This is planned in fact, and I could use some help for it (any contribution is welcome!). Another option would be to have a commercial version of Myrtille, with a paid license to support these developments (because it’s a lot of work and I now have to earn a living, as an independent developer).
Among the upcoming features, file transfer is the next improvement goal. Microphone support is also planned. Maybe also smart cards after that. A separation of the Myrtille gateway and services is also planned, for an easier configuration of the gateway into a DMZ, and further enhance the security (the installer will allow to select the module to be installed; currently this must be done manually). Still about security, I would like to offer another 2FA out of the box (probably Google Authenticator).
Regarding the user interface, I think Myrtille also needs a little visual rework. The login page, the toolbar will be redesigned with better flat styles, colors and icons.
About deployment and integration (and devops by extension), I would like also to bring more cloud support to Myrtille; Azure obviously, because of its integration within the Microsoft/Windows ecosystem, but not only (Amazon, Google, etc.). Myrtille already have a Docker image, but there are some limitations regarding print and audio. I will also look into that.
Responsiveness is the key to a good user experience. I tried hard to chase for every millisecond I could save in the roundtrip workflow. That’s also why I wanted a lightweight javascript code from the start. The Myrtille gateway is also just that, a link between the browser and FreeRDP, maintaining the correlation between the http and rdp sessions, receiving/forwarding data from/to both sides.
Whenever possible, I try to parallelize the processing. The user inputs and display updates, for example, are asynchronous. You can have a display change resulting from a user action, or not. What is important however, is to maintain the order in which they occur. I decided to use named pipes between the gateway and FreeRDP, because they are FIFO queues and maintain such an order. XmlHttp requests and websocket messages are also delivered in order, and so are long polling DOM injections and server-sent events (SSE).
A path for improvement would be to use hardware accelerated graphics and take advantage of the H.264/AVC encoding supported by FreeRDP. Myrtille actually relies on images (PNG/JPEG/WEBP), generated by GDI+ (win32 API, software), but this could be replaced by a video stream (MP4/OGG/WEBM, etc.), generated by FreeRDP (against hardware, or software when using a VM), and pushed from the gateway to the browser into an HTML5 <video> tag or handled by a modern web API (MediaSource, WebRTC, etc.).
Many thanks to the FreeRDP team for this wonderful project! It is not an easy task when working with such a complex protocol and with so many changes over the years.
If you want to know more about Myrtille and its offered services (support, training, etc.), watch demo/tutorial videos or get in touch, you can consult our website.
RDP (Remote Desktop Protocol) is the important settings of Windows 10, as this allows the user to remotely take control of any computer on the network. This software is included with several versions of Windows, including 2000, XP, Vista, 7, 8, 8.1 and 10. When the user connects to the Remote desktop server, then your connection history is saved so there is no need to remember the name or IP of the remote computer. This is also convenient to the consumer’s viewpoint, but also unsafe from the security point, especially when the RDP connection is instigated from a public or untrusted computer. The information about terminal sessions is stored individually to the computer. So as per privacy and security, you need to remove RDP history.
In this article, we are discussing how to remove Remote Desktop Connection Windows 10.
How to Clear RDP Cache in Windows 10
There are three ways to clear Remote Desktop history in Windows 10. Here check out the three ways one by one:
1. How to Remove RDP Connections Cache from the Registry
For deleting Windows 10 Remote Desktop Connections history, you need to manipulate the registry entries.
Note:Manipulating registry entries is very risky as well as difficult as making a small mistake can adversely affect the entire system. So be careful while editing registry entries and create a System Restore point first. Or make use of the Registry Repair Toolas this will automatically fix the registry issues.
- Press Windows + R and then put regedit in the Run dialog box to open Registry Editor. Now click OK.
- Next, in the left Window of Registry Editor, move to following registry key:
HKEY_CURRENT_USERSoftwareMicrosoftTerminal Server ClientDefault
- In the right windows of this location, navigate for the registry string named MRUnumber where the number may be 0, 1, 2…. You need to right-click on this string > select Delete.
- Next close Registry Editor and restart your PC.
After restarting your system, you’ll realize that recent Remote Desktop Connections history is no longer visible under Start Menu.
Helpful Article: Fix: Windows 10 Remote Desktop Protocol (RDP) Not Working Properly Issue
How to clear the RDP connection history using a script
After deleting the RDP connections cache manually from the registry, here check the steps to clear remote desktop history using a script. It offers a small script (BAT file) that allows you to automatically remove RDP history.
For automating the RDP history cleanup, put the below-given script in the startup or deploy it to computers by making use of the group policy.
Please Note: Sometimes, the documents folder can be moved from standard directory c:users%username%documents (for instance, on another partition due to lack of space on system drive). So in this case, you need to change the path to the directory or manually locate the file Default.rdp!
Have a look at all the actions of the script:
- Stop the information output of the console
- Remove entire values in the registry key HKCUSoftwareMicrosoftTerminal Server ClientDefault (clear list of recent RDP connections)
- Remove entire contents from HKCUSoftwareMicrosoftTerminal Server ClientServers (clears the saved usernames and RDP connection history)
- And rebuild the earlier deleted registry key
- Then go to the directory with Default.rdp file
- Modify Default.rdp file attributes, it is by default Hidden and System
- Delete Default.rdp file
Additionally, clear the history of RDP connections by making use of the following PowerShell script:
Get-ChildItem “HKCU:SoftwareMicrosoftTerminal Server Client” -Recurse | Remove-ItemProperty -Name UsernameHint -Ea 0
Remove-Item -Path ‘HKCU:SoftwareMicrosoftTerminal Server Clientservers’ -Recurse 2>&1 | Out-Null
Remove-ItemProperty -Path ‘HKCU:SoftwareMicrosoftTerminal Server ClientDefault’ ‘MR*’ 2>&1 | Out-Null
$docs = [environment]::getfolderpath(“mydocuments”) + ‘Default.rdp’
remove-item $docs -Force 2>&1 | Out-Null
Please Note: The feature of the RDP history cleanup are built into various system and registry “cleaners”, like CCleaner etc.
If in case you desire to completely disable history of remote desktop, then try preventing everyone from writing these registry keys, (you should understand this is an unsupported configuration)
3. Clearing Cached RDP Credentials
If while establishing new remote RDP connections, before typing the password, you check an option Remember Me, and then the username and password will be saved in system Credential Manager. And when the next time you connect to the same computer, the RDP client automatically uses previously saved the password for remote desktop authorization.
The password is removed directly from client’s mstsc.exe window > choose a same connection from the connections list > click on Delete button. After that confirm saved credentials for deletion.
On the other hand, delete saved password directly from Windows Credential Manager and go to Control PanelUser AccountsCredential Manager section. Choose Manage Windows Credentials in the list of saved passwords locate the computer name (in following format TERMSRV/192.168.1.100). And after expand found item > click Remove button
Then in a domain environment, disable saving passwords for RDP connections by utilizing special policy Network access: Do not allow storage of passwords and credentials for network authentication.
So, these are ways that help you to clear remote desktop history.
Conclusion: Hope that by manipulating registry entries you can clear the RDP history in Windows 10. You can also make use of the Registry Repair Tool to avoid any other damages to the PC as taking these steps manually is risky or you can go for automatic tool.