ScrewDrivers Client Plugin Registry Configuration
Overview
The ScrewDrivers Client uses protocol-specific plugins to integrate with RDP and Citrix ICA connections. Understanding the registry configuration for these plugins is essential for troubleshooting client installation issues, connection problems, and plugin loading failures.
This technical reference documents the registry keys and values created by the ScrewDrivers Client installer for both RDP and ICA (Citrix) protocols.
RDP Plugin Configuration
The RDP plugin enables ScrewDrivers functionality over Remote Desktop Protocol connections.
Plugin DLL Files
The RDP plugin DLL is installed to the Windows system directory:
| Version | DLL Filename | Location |
|---|---|---|
| v4 | sdrdp5.dll | C:\Windows\system32 |
| v6 (64-bit) | sdrdp64.dll | C:\Windows\system32 |
| v6 (32-bit) | sdrdp32.dll | C:\Windows\system32 |
| v7 (64-bit) | sdrdp64.dll | C:\Windows\system32 |
| v7 (32-bit) | sdrdp32.dll | C:\Windows\system32 |
Auto-Run Registry Entry
The installer creates an auto-run entry that executes install_rdp.exe at user logon to ensure the RDP plugin is properly configured.
Registry Path:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
Values:
- Value Name:
ScrewDrivers RDP Plugin - Value Type:
REG_SZ - Value Data: Path to install_rdp.exe
Example Value Data:
C:\Program Files\Tricerat\Simplify Printing\ScrewDrivers Client v4\install_rdp.exe
The exact path varies by version. For v6 and v7, the path typically includes "ScrewDrivers" rather than "Simplify Printing" in the folder structure.
RDP Plugin User Configuration
The install_rdp.exe utility configures the following registry values in the current user's hive (HKCU):
Registry Path:
HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default\Addins\SDFXP
This key path creates intermediate keys: "Default", "Addins", and "SDFXP".
Values:
| Value Name | Type | Data | Purpose |
|---|---|---|---|
Name | REG_SZ | Path to RDP plugin DLL | Specifies plugin location |
PCoIPEnabled | REG_DWORD | 1 | Enables PCoIP protocol support |
REMOTECONTROLPERSISTENT | REG_DWORD | 0 | Controls remote control persistence |
Example Values:
Name: C:\Windows\system32\sdrdp5.dll
PCoIPEnabled: 1
REMOTECONTROLPERSISTENT: 0
Troubleshooting RDP Plugin Issues
If RDP connections aren't loading ScrewDrivers:
- Verify the auto-run entry exists in
HKLM\...\Run - Check that install_rdp.exe exists at the specified path
- Verify user-level configuration in
HKCU\...\Terminal Server Client\...\SDFXP - Confirm the plugin DLL exists at the path specified in the
Namevalue - Check DLL permissions: Ensure the current user can read the DLL
- Re-run install_rdp.exe manually to recreate user-level configuration
ICA (Citrix) Plugin Configuration
The ICA plugin enables ScrewDrivers functionality over Citrix ICA connections.
Plugin DLL Files
The ICA plugin DLL is installed to the Citrix ICA Client directory:
| Architecture | DLL Filename | Location |
|---|---|---|
| v4 | sdica6.dll | Citrix ICA Client directory |
| v6 (64-bit) | sdica32.dll | C:\Program Files (x86)\Citrix\ICA Client |
| v6 (32-bit) | sdica32.dll | C:\Program Files\Citrix\ICA Client |
| v7 (64-bit) | sdica32.dll | C:\Program Files (x86)\Citrix\ICA Client |
| v7 (32-bit) | sdica32.dll | C:\Program Files\Citrix\ICA Client |
Even on 64-bit systems, the Citrix ICA Client often runs as a 32-bit process, which is why the plugin is installed to Program Files (x86) and uses sdica32.dll.
ICA Virtual Channel Configuration
The installer configures the ScrewDrivers virtual channel in the Citrix ICA Client configuration.
Registry Path (64-bit Windows):
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Citrix\ICA Client\Engine\Configuration\Advanced\Modules
Registry Path (32-bit Windows):
HKEY_LOCAL_MACHINE\Software\Citrix\ICA Client\Engine\Configuration\Advanced\Modules
ICA Registry Values
The following subkeys and values are configured:
ICA 3.0 Subkey
Path: ...\Modules\ICA 3.0
Value:
- Value Name:
VirtualDriver - Value Type:
REG_SZ - Action: Adds
ScrewDriversFXPto the existing list of virtual drivers
ScrewDriversFXP Subkey (New)
Path: ...\Modules\ScrewDriversFXP
Value:
- Value Name:
DriverNameWin32 - Value Type:
REG_SZ - Value Data:
sdica32.dll
VirtualDriver Subkey
Path: ...\Modules\VirtualDriver
Value:
- Value Name:
ScrewDriversFXP - Value Type:
REG_SZ - Value Data:
""(empty string)
Complete ICA Configuration Example
HKLM\Software\Wow6432Node\Citrix\ICA Client\Engine\Configuration\Advanced\Modules
├── ICA 3.0
│ └── VirtualDriver = "Thinwire3.0,ClientDrive,ClientAudio,ScrewDriversFXP,..."
├── ScrewDriversFXP
│ └── DriverNameWin32 = "sdica32.dll"
└── VirtualDriver
└── ScrewDriversFXP = ""
Troubleshooting ICA Plugin Issues
If Citrix connections aren't loading ScrewDrivers:
- Verify the correct registry path: Use WOW6432Node on 64-bit systems
- Check VirtualDriver list: Ensure
ScrewDriversFXPis listed inICA 3.0\VirtualDriver - Verify ScrewDriversFXP subkey exists with
DriverNameWin32value - Confirm DLL location: Check that
sdica32.dllexists in the Citrix ICA Client directory - Review Citrix ICA Client version: Older versions may not support virtual channels properly
- Check virtual channel allowlist: Some Citrix policies restrict which virtual channels can load
- Restart Citrix ICA Client: The virtual channel configuration is read at startup
Manual Plugin Registration
If the installer failed to properly configure the plugins, you can manually create the registry entries.
Manual RDP Plugin Registration
# Create auto-run entry (adjust path for your version)
New-ItemProperty -Path "HKLM:\Software\Microsoft\Windows\CurrentVersion\Run" `
-Name "ScrewDrivers RDP Plugin" `
-Value "C:\Program Files\Tricerat\ScrewDrivers\Client\install_rdp.exe" `
-PropertyType String `
-Force
# Run install_rdp.exe to configure user-level settings
& "C:\Program Files\Tricerat\ScrewDrivers\Client\install_rdp.exe"
Manual ICA Plugin Registration
# Determine the correct registry path based on OS architecture
$regPath = if ([Environment]::Is64BitOperatingSystem) {
"HKLM:\Software\Wow6432Node\Citrix\ICA Client\Engine\Configuration\Advanced\Modules"
} else {
"HKLM:\Software\Citrix\ICA Client\Engine\Configuration\Advanced\Modules"
}
# Create ScrewDriversFXP subkey
New-Item -Path "$regPath\ScrewDriversFXP" -Force
New-ItemProperty -Path "$regPath\ScrewDriversFXP" `
-Name "DriverNameWin32" `
-Value "sdica32.dll" `
-PropertyType String `
-Force
# Add to VirtualDriver list in ICA 3.0
$icaPath = "$regPath\ICA 3.0"
$currentValue = (Get-ItemProperty -Path $icaPath -Name "VirtualDriver").VirtualDriver
if ($currentValue -notlike "*ScrewDriversFXP*") {
$newValue = $currentValue + ",ScrewDriversFXP"
Set-ItemProperty -Path $icaPath -Name "VirtualDriver" -Value $newValue
}
# Create VirtualDriver subkey entry
New-Item -Path "$regPath\VirtualDriver" -Force
New-ItemProperty -Path "$regPath\VirtualDriver" `
-Name "ScrewDriversFXP" `
-Value "" `
-PropertyType String `
-Force
Write-Host "ICA plugin registered. Restart Citrix ICA Client."
Verification Scripts
Verify RDP Plugin Configuration
# Check auto-run entry
$runKey = Get-ItemProperty -Path "HKLM:\Software\Microsoft\Windows\CurrentVersion\Run" `
-Name "ScrewDrivers RDP Plugin" -ErrorAction SilentlyContinue
if ($runKey) {
Write-Host "✓ Auto-run entry exists: $($runKey.'ScrewDrivers RDP Plugin')"
} else {
Write-Host "✗ Auto-run entry missing"
}
# Check user-level configuration
$sdfxpKey = Get-ItemProperty -Path "HKCU:\Software\Microsoft\Terminal Server Client\Default\Addins\SDFXP" `
-ErrorAction SilentlyContinue
if ($sdfxpKey) {
Write-Host "✓ User configuration exists"
Write-Host " DLL: $($sdfxpKey.Name)"
} else {
Write-Host "✗ User configuration missing (run install_rdp.exe)"
}
Verify ICA Plugin Configuration
# Determine correct registry path
$regPath = if ([Environment]::Is64BitOperatingSystem) {
"HKLM:\Software\Wow6432Node\Citrix\ICA Client\Engine\Configuration\Advanced\Modules"
} else {
"HKLM:\Software\Citrix\ICA Client\Engine\Configuration\Advanced\Modules"
}
# Check if ScrewDriversFXP is in VirtualDriver list
$ica30 = Get-ItemProperty -Path "$regPath\ICA 3.0" -ErrorAction SilentlyContinue
if ($ica30.VirtualDriver -like "*ScrewDriversFXP*") {
Write-Host "✓ ScrewDriversFXP in VirtualDriver list"
} else {
Write-Host "✗ ScrewDriversFXP not in VirtualDriver list"
}
# Check ScrewDriversFXP subkey
$fxpKey = Get-ItemProperty -Path "$regPath\ScrewDriversFXP" -ErrorAction SilentlyContinue
if ($fxpKey.DriverNameWin32 -eq "sdica32.dll") {
Write-Host "✓ ScrewDriversFXP subkey configured correctly"
} else {
Write-Host "✗ ScrewDriversFXP subkey missing or incorrect"
}