Custom URI Scheme (sometimes called a Pluggable Protocol Handler).
It allows a web browser to communicate with a locally installed desktop application. Instead of the browser trying to handle the link itself (like it does for http:// or https://), it hands the entire URL over to the Windows operating system, which then looks up which application is registered to handle that specific "protocol" (in your case, bimcloudqs).
When you click a link like bimcloudqs://projectConstruction/..., the process follows these steps:
bimcloudqs name..exe, passing the entire URI string as a command-line argument.The authoritative documentation for this on Windows is provided by Microsoft under the title "Registering an Application to a URI Scheme."
To create your own, you need two things: an executable program and a specific entry in the Windows Registry.
To register a scheme (let's call it mycustomapp), you need to create a hierarchy in the Registry under HKEY_CLASSES_ROOT. You can do this by creating a .reg file with the following content:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\mycustomapp]
"URL Protocol"=""
@="URL:My Custom Protocol"
[HKEY_CLASSES_ROOT\mycustomapp\shell]
[HKEY_CLASSES_ROOT\mycustomapp\shell\open]
[HKEY_CLASSES_ROOT\mycustomapp\shell\open\command]
@="\"C:\\Path\\To\\YourApp.exe\" \"%1\""
URL Protocol: This empty string value tells Windows this key is a protocol handler."%1": This is a placeholder. When the app is called, Windows replaces %1 with the full URL (e.g., mycustomapp://open?file=test.txt).Your application needs to be programmed to handle command-line arguments. When launched via the URI, the first argument passed to your program will be the full string.
Example (C# / .NET):
static void Main(string[] args)
{
if (args.Length > 0)
{
string fullUri = args[0];
// Logic to parse "mycustomapp://action?params..."
Console.WriteLine("Received command: " + fullUri);
}
}
Once the registry is set, you trigger it via a standard HTML link:
<a href="mycustomapp://doSomething?id=123">Launch Local App</a>
Since you are essentially allowing a website to run code on a user's machine, you must sanitize the input.
params into a shell command or a file-opening function. A malicious website could craft a URL like mycustomapp://open?file=C:\Windows\System32\somefile.exe or use character injection to run unintended commands.