Skip to content

Commit 66a27d6

Browse files
authored
First commit.
1 parent 0792f43 commit 66a27d6

File tree

2 files changed

+73
-0
lines changed

2 files changed

+73
-0
lines changed

install.iss

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#define MyAppTitle "RDP protocol handler"
2+
#define MyAppName "rdp-protocol-handler"
3+
#define MyAppVersion "1.0.0"
4+
#define MyAppPublisher "chrono-meter@gmx.net"
5+
#define MyAppURL ""
6+
7+
[Setup]
8+
AppId={{8CF91C0E-652F-421C-9DCC-8C87702D2CCE}
9+
AppName={#MyAppTitle}
10+
AppVersion={#MyAppVersion}
11+
AppPublisher={#MyAppPublisher}
12+
;AppPublisherURL={#MyAppURL}
13+
;AppSupportURL={#MyAppURL}
14+
;AppUpdatesURL={#MyAppURL}
15+
DefaultDirName={localappdata}\Programs\rdp-protocol-handler
16+
PrivilegesRequired=lowest
17+
OutputBaseFilename=setup-{#MyAppName}-{#MyAppVersion}
18+
Compression=lzma
19+
SolidCompression=yes
20+
21+
[Languages]
22+
Name: "japanese"; MessagesFile: "compiler:Languages\Japanese.isl"
23+
24+
[Files]
25+
Source: "rdp-protocol-handler.ps1"; DestDir: "{app}"
26+
27+
[Registry]
28+
Root: HKCU; Subkey: "Software\Classes\rdp"; Flags: uninsdeletekeyifempty
29+
Root: HKCU; Subkey: "Software\Classes\rdp"; ValueType: string; ValueName: "URL Protocol"; ValueData: ""
30+
Root: HKCU; Subkey: "Software\Classes\rdp\DefaultIcon"; Flags: uninsdeletekeyifempty
31+
Root: HKCU; Subkey: "Software\Classes\rdp\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{sys}\mstsc.exe,0"
32+
Root: HKCU; Subkey: "Software\Classes\rdp\shell"; Flags: uninsdeletekeyifempty
33+
Root: HKCU; Subkey: "Software\Classes\rdp\shell"; ValueType: string; ValueName: ""; ValueData: "open"
34+
Root: HKCU; Subkey: "Software\Classes\rdp\shell\open"; Flags: uninsdeletekeyifempty
35+
Root: HKCU; Subkey: "Software\Classes\rdp\shell\open\command"; Flags: uninsdeletekeyifempty
36+
Root: HKCU; Subkey: "Software\Classes\rdp\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{sys}\WindowsPowerShell\v1.0\powershell.exe"" -ExecutionPolicy Bypass -WindowStyle Hidden -File ""{app}\rdp-protocol-handler.ps1"" ""%1"""

rdp-protocol-handler.ps1

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#!powershell
2+
param([string]$url)
3+
4+
# powershell -ExecutionPolicy Bypass -WindowStyle Hidden -File "rdp-protocol-handler.ps1" "rdp://full%20address=s:mypc:3389&audiomode=i:2&disable%20themes=i:1"
5+
if (!$url -match "^rdp://") {
6+
echo "non rdp url"
7+
exit
8+
}
9+
10+
# Add-Type -AssemblyName System.Windows.Forms
11+
# [System.Windows.Forms.MessageBox]::Show($url)
12+
13+
# TODO: Parallels Client (https://kb.parallels.com/en/124310)
14+
# "C:\Program Files\Parallels\Client\TSClient.exe" s!='HOST' t!='PORT' d!='' u!='USER' a!='#4' m!='4' o!='0' i!='' r!='1'
15+
# if exist HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{5CF25D42-1069-4838-9A68-BCB410EF98EB}
16+
# HKEY_CLASSES_ROOT\CLSID\{F5DF8D65-559D-4b75-8562-5302BD2F5F20}\InprocServer32\@ = "C:\Program Files\Parallels\Client\TuxClientSystem.dll"
17+
# HKEY_CLASSES_ROOT\tuxclient\DefaultIcon\@ = "C:\Program Files\Parallels\Client\TSClient.exe,0"
18+
19+
try { $webutil = [System.Web.HttpUtility] } catch { $webutil = [System.Net.WebUtility] }
20+
$url = [regex]::Replace($url, '/$', '') # chrome append trailing slash
21+
$content = $url.Substring(6).Split('&') | foreach {
22+
$k, $v = $_.Split('=', 2)
23+
return ($webutil::UrlDecode($k) + ":" + $webutil::UrlDecode($v))
24+
}
25+
26+
$tmp = New-TemporaryFile
27+
try {
28+
# rdp file encoding is UCS-2 LE w/ BOM
29+
$content | Out-File -FilePath $tmp.FullName -Encoding Unicode
30+
31+
# todo: https://github.com/FuzzySecurity/PowerShell-Suite/blob/master/Invoke-CreateProcess.ps1
32+
Start-Process -FilePath "mstsc" -ArgumentList @($tmp.FullName)
33+
Start-Sleep -s 15
34+
35+
} finally {
36+
Remove-Item $tmp.FullName -Force
37+
}

0 commit comments

Comments
 (0)