Es scheint, dass der allgemein akzeptierte Ansatz zum Starten einer URL darin besteht, Process.Start aufzurufen, z. B.
var url = new Uri(uriString);
Process.Start(url.AbsoluteUri);
z.B. wurde folgendes vorgeschlagen aquí .
Das Problem dabei ist, dass, wenn die URL nicht vertrauenswürdig ist, schlimme Dinge passieren können, z. B. wenn die Zeichenfolge @"c: \windows\system32\notepad.exe "Mit dem obigen Code wird Notepad gestartet, ohne dass Fragen gestellt werden.
Wenn Sie jedoch versuchen, eine lokale ausführbare Datei wie diese im Browser zu starten, werden Sie von zahlreichen Sicherheitsüberprüfungen begleitet, bevor dies geschieht.
Die Frage ist also: Wie kann dies sicher und sauber programmatisch (in C#) durchgeführt werden?
Nicht ganz so saubere Techniken haben wir in Betracht gezogen:
- sich das Uri-Protokoll ansehen und alles blockieren, was nicht http/https ist. Das ist hacky.
- den registrierten Browser über einen Registrierungsschlüssel finden und ihn mit der Uri in der cmd-Zeile starten. Diese Art von Code neigt dazu, bei einigen Browsern unübersichtlich und unzuverlässig zu sein.
Ich hoffe also auf eine Technik, die wie ein LaunchUrlThroughBrowser(url) wäre.