Kenntnisstand

Juli 2020

Wenn Links im ProCall Gesprächsfenster sich nicht mit dem Standard-Browser öffnen sollen, sondern zum Beispiel mit Google Chrome, Mozilla Firefox oder Microsoft Edge, können Sie das Gesprächsfenster anpassen und den Browser definieren.

Generell können Sie das Gesprächsfenster über einen individuelle URI (Uniform Resource Identifier) als Aufrufparameter so anpassen, dass nicht nur https: oder http: Seiten aufgerufen werden, sondern auch andere Anwendungen.

Nachfolgend sind zur Orientierung einige wichtige Hinweise für die Vorgehensweise und ein Beispiel beschrieben. 

Die beschriebene Vorgehensweise setzt Kenntnisse in Programmierung, Konfiguration und Administration und die entsprechenden Berechtigungen voraus. 

Vorgehensweise

Eindeutigen nicht-öffentlichen URI generieren

Definieren Sie einen eindeutigen und noch nicht vergebenen URI, der nicht öffentlich bekannt ist.

Für den Start des Microsoft Edge Browsers kann die URI microsoft-edge verwendet werden, gefolgt von der Adresszeile, z. B. microsoft-edge:https://www.google.com. Sie brauchen dann keine weiteren Schritte in der Vorgehensweise, da dies integraler Bestandteil von Windows ist.

Bereits belegte und damit nicht nutzbare URIs finden sich unter https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml

Format

Das Format des URI muss dem Schema aus RFC3986 (https://tools.ietf.org/html/rfc3986#section-3.1) folgen, d. h. aus einer beliebigen Folge von Buchstaben, Ziffern, Plus-Zeichen (+), Punkt-Zeichen (.) oder Bindestrich-Zeichen (-) bestehen, beginnend mit mindestens einem Buchstaben.

Programm oder Skript implementieren

Implementieren Sie das Programm oder Skript welches ihren Browser oder Anwendung starten soll.

Ausführbar

Das Programm oder Skript muss auf dem Rechner und von von dem Benutzer, wo der URI genutzt werden soll, ausgeführt werden können.

Das Programm wird beim Öffnen des URI mit den Benutzerrechten gestartet und die URI als Aufrufparameter enthalten.

Das Programm kann gleichzeitig für unterschiedliche URIs genutzt werden, da die gesamte URI übergeben wird und anhand unterschiedlicher URIs auch unterschiedliche Aktionen ausgeführt können.

Registrierung des URI und der Anwendung am Betriebssystem

Um die Verknüpfung zwischen dem individuell definierten URI und dem Programm herzustellen, muss die Verknüpfung dem Betriebssystem bekannt gemacht werden.

Umsetzung anhand eines Beispiels: Alternativen Browser in einer Webseite öffnen

In einer Webseite soll über eine individuelle URI "x-5t4r7my4pp" ein alternativer Anwendung geöffnet werden. Mit "x-defaultbrowser" soll eine Webseite über den Standard Browser des Benutzers geöffnet werden.

Beispiel URI

Die URI x-5t4r7my4pp (x-startmyapp) wurde kryptisch abgebildet, um einen möglichen Missbrauch zu erschweren. Außerdem registrieren wir noch eine zweite URI x-defaultbrowser um den Standard Browser mit einer beliebigen URL zu öffnen.

Das Beispiel als Webseite sieht wie folgt aus.

Download: mylaunchscript.html

<!DOCTYPE html>
<head>
	<meta charset="utf-8"/>
</head>
<script type="text/javascript">
"use strict";

function x5t4r7my4pp() {
  // Used babeljs.io as transpiler
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
	args[_key] = arguments[_key];
  }
  window.open(encodeURI("x-5t4r7my4pp:" + args.join('§')), '_top');
}

function xdefaultbrowser(url) {
  window.open(encodeURI("x-defaultbrowser:" + url), '_top');
}
</script>
<html>
	<body>
		<a href="x-5t4r7my4pp:https://www.google.com§Berlin§Leonberg§Starnberg§Olching§Udine">Start My App</a><p/>
		<a onclick="x5t4r7my4pp('https://www.google.com','Berlin','Leonberg','Starnberg','Olching','Udine')" style="color:red;text-decoration:underline;cursor:pointer;">Start My App</a><p/>
		<a href="x-defaultbrowser:https://www.estos.de">Open estos Homepage in Standard Browser</a><p/>
		<a onclick="xdefaultbrowser('https://www.estos.de')" style="color:red;text-decoration:underline;cursor:pointer;">Open estos Homepage in Standard Browser</a><p/>
		<a href="microsoft-edge:https://www.google.com">Open Google Search in Edge</a>
	</body>
</html>
XML

Beispiel Skript

Bei dem nachfolgenden Beispiel handelt es ich um ein Windows Batch Skript, das unsere beiden URIs x-5t4r7my4pp und x-defaultbrowser in Programmaufrufe umsetzt.

Download: mylaunchscript.bat

mylaunchscript.bat

@rem MIT License
@rem 
@rem Copyright (c) 2020 estos GmbH
@rem 
@rem Permission is hereby granted, free of charge, to any person obtaining a copy
@rem of this software and associated documentation files (the "Software"), to deal
@rem in the Software without restriction, including without limitation the rights
@rem to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
@rem copies of the Software, and to permit persons to whom the Software is
@rem furnished to do so, subject to the following conditions:
@rem 
@rem The above copyright notice and this permission notice shall be included in all
@rem copies or substantial portions of the Software.
@rem 
@rem THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
@rem IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
@rem FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@rem AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
@rem LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
@rem OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
@rem SOFTWARE.
@echo off
setlocal ENABLEDELAYEDEXPANSION
rem **************************************************************************
rem * 
rem *  WICHTIG: Kodierung des Editors auf Westeuropäisch CP850/OEM850 stellen
rem *  WICHTIG: Diese Datei nicht als UTF-8 speichern
rem *  
rem **************************************************************************
rem UTF-8 Kodierung für § (Paragraph) Zeichen
set "searchstr=%%C2%%A7"
rem Das § (Paragraph) Zeichen als Trennzeichen zwischen Parametern
set "replstr=§"
rem Aufrufparameter überarbeiten um das § (Paragraph) Zeichen als Trennzeichen nutzen zu können
set "cmdparams=%1"
if "P%cmdparams%"=="P" goto :endlocal
set "cmdparams=!cmdparams:%searchstr%=%replstr%!"

rem Trennen zwischen URI und dem Rest
rem msg "%USERNAME%" "DEBUG: cmdparams='%cmdparams%', searchstr='%searchstr%'"
for /f "tokens=1,* delims=:" %%a in (%cmdparams%) do set "uri=%%a"&set "params=%%b"

rem Abhängig von der URI zu der entsprechenden Stelle springen
rem msg "%USERNAME%" "DEBUG: uri='%uri%', params='%params%'"
if "P%uri%"=="Px-5t4r7my4pp" goto x5t4r7my4pp
if "P%uri%"=="Px-defaultbrowser" goto xdefaultbrowser

rem Info-Fenster mit Informationen über nicht erkannte URI öffnen
msg "%USERNAME%" "ERROR: uri='%uri%', params='%params%', cmdparams='%cmdparams%'"
exit /b 1

:x5t4r7my4pp
rem Die ersten drei (1,2,*) Aufrufparameter getrennt durch Trennzeichen ermitteln
for /f "tokens=1,2,* delims=%replstr%" %%a in ("%params%") do set "parm1=%%a"&set "parm2=%%b"&set "parms=%%c"

rem explorer "microsoft-edge:%parm1%"
rem "C:\Program Files\Internet Explorer\iexplore.exe" "%parm1%"
rem "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" "%parm1%"
msg "%USERNAME%" "DEBUG x-5t4r7my4pp: parm1='%parm1%', parm2='%parm2%', parms='%parms%'"
goto :endlocal

:xdefaultbrowser
rem msg "%USERNAME%" "DEBUG x-defaultbrowser: address='%parmas%'"
explorer "%params%"
goto :endlocal

:endlocal
exit /b 0
TEXT


Beispiel Registrierung

Das Windows Batch Skript wird im Ordner "c:\Users\Admin\mylaunchscript.bat" hinterlegt und für die URI "x-5t4r7my4pp" und "x-defaultbrowser" in der Windows Registry eine Verknüpfung hergestellt. Außerdem wird die initiale Internet Explorer Sicherheitsabfrage stellvertretend für den aktuellen Benutzer und die beiden URIs deaktiviert.

Download: mylaunchscript.reg

mylaunchscript.reg

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\x-5t4r7my4pp]
@="URL: Launch My Script"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\x-5t4r7my4pp\shell]
[HKEY_CLASSES_ROOT\x-5t4r7my4pp\shell\open]
[HKEY_CLASSES_ROOT\x-5t4r7my4pp\shell\open\command]
@="cmd /c start /min C:\\Users\\Admin\\mylaunchscript.bat \"%1\""

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\ProtocolExecute\x-5t4r7my4pp]
WarnOnOpen=DWORD:0

[HKEY_CLASSES_ROOT\x-defaultbrowser]
@="URL: Launch My Script"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\x-defaultbrowser\shell]
[HKEY_CLASSES_ROOT\x-defaultbrowser\shell\open]
[HKEY_CLASSES_ROOT\x-defaultbrowser\shell\open\command]
@="cmd /c start /min C:\\Users\\Admin\\mylaunchscript.bat \"%1\""

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\ProtocolExecute\x-defaultbrowser]
WarnOnOpen=DWORD:0
TEXT


Ergänzungen

Vorausschauende Deaktivierung der Sicherheitsabfrage im Microsoft Internet Explorer (ProCall)

Bei der ersten Nutzung des URI erscheint eine Sicherheitsabfrage im Internet Explorer:

Das folgende Windows PowerShell Skript kann dazu genutzt werden, im Kontext des Administrators die Sicherheitsabfrage das Häkchen "Vor dem Öffnen dieses Adresstyps immer bestätigen" für einen Bestimmten Anwender ($env.USERNAME) vorab zu deaktivieren (und damit zu beantworten). Alternativ kann HKEY_CURRENT_USER im Kontext des Anwenders verwendet werden (siehe mylaunchscript.reg Beispiel weiter oben).

disableiequestion.ps1

# MIT License
# 
# Copyright (c) 2020 estos GmbH
# 
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
# 
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
# 
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
$sid=(New-Object System.Security.Principal.NTAccount($env:USERNAME)).Translate([System.Security.Principal.SecurityIdentifier]).Value
$path="Registry::HKEY_USERS\$sid\Software\Microsoft\Internet Explorer\ProtocolExecute\x-5t4r7my4pp"
New-Item -Path $path -Force | Out-Null
New-ItemProperty -Path $path -Name WarnOnOpen -PropertyType DWord -Value 0 | Out-Null
TEXT