This is a matter of registry keys. Look at the Microsoft documentation.
The code below can create it for you:
function RegisterURLProtocol( const ProtocolID : String; const ProtocolName : String; const DefaultIcon : String; const OpenCommand : String) : Boolean; var Reg : TRegistry; begin Result := FALSE; Reg := TRegistry.Create(KEY_WRITE); try Reg.RootKey := HKEY_CLASSES_ROOT; if not Reg.OpenKey(ProtocolID, TRUE) then Exit; Reg.WriteString('', 'URL:' + ProtocolName); Reg.WriteString('URL Protocol', ''); if Reg.OpenKey('DefaultIcon', True) then begin Reg.WriteString('', DefaultIcon); end; Reg.CloseKey; if not Reg.OpenKey(ProtocolID + '\shell\open\command', True) then Exit; Reg.WriteString('', OpenCommand); Result := TRUE; finally FreeAndNil(Reg); end; end;