I’m trying to trigger a custom Windows application from my PHP code using a custom protocol handler (videoplugin). I’ve registered the protocol in the Windows Registry and confirmed that it works when I run it manually from the Windows Run dialog.
What works:
Running this from Win + R works and launches the application successfully:
"C:\Program Files (x86)\IPRPLocalServiceComponents\IPRP Video Plugin\VideoPlugin.exe" "IP:100.100.210.16;Port:90;UserName:admin;Password:P@ssword1;AccountID:8518;ZoneNo.:501;AlarmTime:2025-04-08T15:01:46;AlarmInfo:Motion Detection Alarm;PCAlarmTimeTag:0;"
And here is my registry config (.reg file):
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\videoplugin]
@="URL:VideoPlugin Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\videoplugin\shell]
[HKEY_CLASSES_ROOT\videoplugin\shell\open]
[HKEY_CLASSES_ROOT\videoplugin\shell\open\command]
@="C:\\Program Files (x86)\\IPRPLocalServiceComponents\\IPRP Video Plugin\\VideoPlugin.exe %1"
What fails:
From my PHP code, I’m trying to trigger the URL like this:
if (isset($_POST['triggerVideo'])) {
$firstFourDigits = substr($accountno, 0, 4);
$formattedStartDate = ($DateTimeStart instanceof DateTime) ? $DateTimeStart->format('Y-m-d\TH:i:s') : date('Y-m-d\TH:i:s');
$videoUrl = "videoplugin:IP:100.100.210.16;Port:90;UserName:admin;Password:P@ssword1;AccountID:$firstFourDigits;ZoneNo.:501;AlarmTime:$formattedStartDate;AlarmInfo:Motion Detection Alarm;PCAlarmTimeTag:0;";
echo "";
echo "";
exit;
}
When I run this in the browser, nothing happens. The browser either ignores it or throws a permission error. No exceptions are caught in the try…catch block either.
What I’ve tried:
- Verified the protocol is correctly registered in regedit.
- Manually tested the command — works.
- Ensured browser allows custom protocol handlers (tried in Chrome and Edge).
Confirmed that JavaScript is executing by adding console.log.
Question:
How can I reliably open my custom videoplugin: protocol handler from PHP via browser (ideally Chrome or Edge)? Is this behavior blocked by the browser, or is there a better way to launch a native app from PHP?