> For the complete documentation index, see [llms.txt](https://docs.devolutions.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.devolutions.net/rdm/knowledge-base/troubleshooting-articles/rdp-session-troubleshooting.md).

# RDP session troubleshooting

Troubleshoot RDP session problems in Remote Desktop Manager by disabling RDP API hooking and generating API hooking log files for diagnosis.

If you are encountering problems with RDP sessions in Remote Desktop Manager, here is the procedure to follow to help us diagnose the source of the problem:

1. Disable RDP API hooking, and try reproducing the issue. If the issue goes away, then RDP API hooking is responsible.
2. Re-enable RDP API hooking, then generate and send RDP API hooking log files. Ideally, capture a success case and failure case scenario for easier comparison.

### Disable RDP API hooking

[Microsoft RDP API hooking](https://github.com/Devolutions/MsRdpEx) is enabled by default in Remote Desktop Manager. API hooking is required [to extend the functionality](https://blog.devolutions.net/2022/08/extending-the-microsoft-rdp-client-with-api-hooking/) of the Microsoft RDP client in both embedded (RDP ActiveX) and external modes (mstsc, msrdc).

1. In Remote Desktop Manager, go to ***File – Settings – Types – Sessions – Remote Desktop (RDP)***.
2. Set ***Enable API hooking*** to ***Disabled***.
3. Click ***Save***.
4. Restart Remote Desktop Manager to apply the changes.

Try launching your RDP session again, and see if the issue goes away.

### Generate and send RDP API hooking log files

Beyond extending the Microsoft RDP client features, RDP API hooking also makes it possible to produce logs of internal RDP client events, which is very useful in diagnosing the problem.

1. In Remote Desktop Manager, go to ***File – Settings – Types – Sessions – Remote Desktop (RDP)***.
2. Ensure ***Enable API hooking*** is set to ***Enabled***, especially if you have disabled it previously.
3. Set the ***Log level*** to ***Trace***.
4. Click ***Save***.
5. Restart Remote Desktop Manager to apply the changes.

Capture a failure case:

1. Launch a *single* RDP session that is affected by the issue, then close Remote Desktop Manager.
2. Go to **%LocalAppData%\MsRdpEx** or the custom log output path in the file explorer.
3. Copy the log file to a "failure" directory, or rename the log file to add "failure" in the name.

Capture a success case (if possible):

1. Launch Remote Desktop Manager, launch a *single* RDP session that is not affected by the issue, then close Remote Desktop Manager
2. Go to **%LocalAppData%\MsRdpEx** or the custom log output path in the file explorer.
3. Copy the log file to a "success" directory, or rename the log file to add "success" in the name.

Oftentimes, issues affect the RDP embedded mode (RDP ActiveX) differently from the RDP external mode (mstsc). If this is your case, then capture logs for the same RDP connection entry in both modes for easier comparison:

1. Launch Remote Desktop Manager
2. Right-click on the RDP connection entry, then click on ***Open with parameters -> Open (embedded/tabbed)*** to launch the RDP session in embedded mode, and then close the tab.
3. Right-click on the RDP connection entry, then click on ***Open with parameters -> Open (external)*** to launch the RDP session in external mode, and then close the RDP client.
4. Close Remote Desktop Manager, then go to **%LocalAppData%\MsRdpEx** or the custom log output path in the file explorer.
5. "MsRdpEx\_RDM.log" matches the embedded mode, and "MsRdpEx\_EntryName.log" matches the external mode, rename accordingly.

Contact our customer support team at <service@devolutions.net> to get a secure link to upload the file.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.devolutions.net/rdm/knowledge-base/troubleshooting-articles/rdp-session-troubleshooting.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
