{"id":13595835,"url":"https://github.com/Devolutions/MsRdpEx","last_synced_at":"2025-04-09T13:33:31.765Z","repository":{"id":40289675,"uuid":"428028451","full_name":"Devolutions/MsRdpEx","owner":"Devolutions","description":"Microsoft RDP Client Extensions","archived":false,"fork":false,"pushed_at":"2024-12-20T14:53:41.000Z","size":2970,"stargazers_count":186,"open_issues_count":5,"forks_count":33,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-01-07T15:01:42.093Z","etag":null,"topics":["api-hooking","rdp"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Devolutions.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-11-14T20:02:04.000Z","updated_at":"2024-12-29T03:06:32.000Z","dependencies_parsed_at":"2023-01-25T15:00:11.177Z","dependency_job_id":"a2a2e84d-f1cb-4c60-bb2e-8593351dd66a","html_url":"https://github.com/Devolutions/MsRdpEx","commit_stats":null,"previous_names":[],"tags_count":37,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Devolutions%2FMsRdpEx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Devolutions%2FMsRdpEx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Devolutions%2FMsRdpEx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Devolutions%2FMsRdpEx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Devolutions","download_url":"https://codeload.github.com/Devolutions/MsRdpEx/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248049702,"owners_count":21039263,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-hooking","rdp"],"created_at":"2024-08-01T16:01:58.807Z","updated_at":"2025-04-09T13:33:31.305Z","avatar_url":"https://github.com/Devolutions.png","language":"C++","funding_links":[],"categories":["C++"],"sub_categories":[],"readme":"# Microsoft RDP Extensions (MsRdpEx)\n\n## Installation\n\nDownload and install the latest MsRdpEx MSI package [GitHub releases](https://github.com/Devolutions/MsRdpEx/releases).\n\nAfter installation, the launcher executables and API hooking DLL can be found in \"%ProgramFiles%\\Devolutions\\MsRdpEx\":\n\n![MsRdpEx Installed](./images/MsRdpEx_installed.png)\n\nThe installer automatically associates .RDP files with mstscex, and .RDPW files with msrdcex, so you can get started right away. Simply revert the file type association to use the original Microsoft Remote Desktop Clients without the extensions, or launch mstsc.exe/msrdc.exe manually.\n\nThis repository also contains a C# [nuget package](https://www.nuget.org/packages/Devolutions.MsRdpEx) that can be used to consume the RDP ActiveX interface with or without API hooking, along with launching mstsc.exe or msrdc.exe as external processes using MsRdpEx.dll.\n\n## Extended .RDP File Options\n\nMsRdpEx processes additional .RDP file options that are not normally supported by mstsc.exe:\n\n| RDP setting                        | Description            | Values                 | Default value          |\n|------------------------------------|------------------------|------------------------|:----------------------:|\n| KDCProxyURL:s:value | Kerberos KDC Proxy HTTPS URL | KDC Proxy HTTPS *URL*, not using error-prone KDCProxyName format, and unrestricted in length, like https://\u003chostname\u003e:443/KdcProxy | - |\n| UserSpecifiedServerName:s:value | Server name used for TLS and Kerberos server validation | explicit server name (usually the machine FQDN) | same as DNS hostname used for RDP server |\n| EnableMouseJiggler:i:value | Enable RDP mouse jiggler | 0/1 | 0 |\n| MouseJigglerInterval:i:value | RDP mouse jiggler interval in seconds | Interval in seconds | 60 |\n| MouseJigglerMethod:i:value | RDP mouse jiggler method | 0/1 | 0 |\n| AllowBackgroundInput:i:value | Allow background input events when window is not in focus | 0/1 | 0 |\n| EnableRelativeMouse:i:value | Enable relative mouse mode | 0/1 | 0 |\n| DisableCredentialsDelegation:i:value | Disable CredSSP credential delegation | 0/1 | 0 |\n| RedirectedAuthentication:i:value | Enable Remote Credential Guard | 0/1 | 0 |\n| RestrictedLogon:i:value | Enable Restricted Admin Mode | 0/1 | 0 |\n| DisableUDPTransport:i:value | Disable RDP UDP transport (TCP only) | 0/1 | 0 |\n| ConnectToChildSession:i:value | Connect to child session | 0/1 | 0 |\n| EnableHardwareMode:i:value | Disable DirectX client presenter (force GDI client presenter) | 0/1 | 1 |\n| ClearTextPassword:s:value | Target RDP server password - use for testing only | Insecure password | - |\n| GatewayPassword:s:value | RD Gateway server password - use for testing only | Insecure password | - |\n\n## Extended RDP client logs\n\nMsRdpEx also supports extended logging controlled by environment variables:\n\n```powershell\n$Env:MSRDPEX_LOG_ENABLED=\"1\"\n$Env:MSRDPEX_LOG_LEVEL=\"DEBUG\"\n.\\mstscex.exe \u003cdestination.rdp\u003e\n```\n\nIf you don't pass a .RDP file, the mstsc.exe GUI will launch normally, but you won't be able to leverage any of the extended MsRdpEx .RDP file options. The default log file path location is in \"%LocalAppData%\\MsRdpEx\\MsRdpEx.log\". You can override log settings using the MSRDPEX_LOG_LEVEL and MSRDPEX_LOG_FILE_PATH environment variables:\n\n```powershell\n$Env:MSRDPEX_LOG_ENABLED=\"1\"\n$Env:MSRDPEX_LOG_LEVEL=\"TRACE\"\n$Env:MSRDPEX_LOG_FILE_PATH=\"C:\\Windows\\Temp\\MsRdpEx.log\"\n.\\mstscex.exe\n```\n\nThe trace log level is extremely verbose, so it should only be used when necessary. The MsRdpEx logging is very helpful in understanding the Microsoft RDP client internals.\n\n## Building from source\n\nUsing a [Visual Studio developer shell](https://www.powershellgallery.com/packages/VsDevShell), build the [Detours](https://github.com/Microsoft/Detours) library:\n\n```powershell\nEnter-VsDevShell x64\n.\\detours.ps1\n```\n\nGenerate the Visual Studio project files for your target platform:\n\n```powershell\nmkdir build-x64 \u0026\u0026 cd build-x64\ncmake -G \"Visual Studio 17 2022\" -A x64 ..\n```\n\nOpen the Visual Studio solution or build it from the command-line:\n\n```powershell\ncmake --build . --config Release\n```\n\nYou should now have mstscex.exe and MsRdpEx.dll.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDevolutions%2FMsRdpEx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FDevolutions%2FMsRdpEx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDevolutions%2FMsRdpEx/lists"}