Wie registriere ich ein benutzerdefiniertes URL-Protokoll in Windows?

Antworten:

63
  1. Gehen Sie Startdann in FindTyp regedit-> es sollte sich öffnenRegistry editor

  2. Klicken Sie Right Mouseauf HKEY_CLASSES_ROOTdann New->Key

Geben Sie hier die Bildbeschreibung ein

  1. Geben Sie im Schlüssel den Namen in Kleinbuchstaben ein, unter dem URLs aufgerufen werden sollen (in meinem Fall testus://sdfsdfsdf). Klicken Sie dann Right Mouseauf testus-> dann New-> String Valueund fügen Sie URL protocolohne Wert hinzu.

Geben Sie hier die Bildbeschreibung ein

  1. Dann fügen Sie weitere Einträge wie Sie mit Protokoll haben ( Right Mouse New-> Key) und Hierarchie erstellen wie testus-> shell-> open-> commandund innerhalb commandÄnderung (Default)auf den Pfad , in dem .exeSie starten möchten , ist, wenn Sie die Parameter auf Ihre exe übergeben wollen , dann wickeln Pfad zu exe in ""und hinzufügen, "%1"um auszusehen wie:"c:\testing\test.exe" "%1"

Geben Sie hier die Bildbeschreibung ein

  1. Um Test funktioniert , wenn es gehen Internet Explorer(nicht Chromeoder Firefox) und geben Sie testus:have_you_seen_this_mandiese sollten Feuer Ihre .exe(geben Sie einige Anweisungen , dass Sie dies tun wollen - sagen Ja) und gelangen in args testus://have_you_seen_this_man.

Hier ist eine Beispiel-Konsolen-App zum Testen:

using System;

namespace Testing
{
    class Program
    {
        static void Main(string[] args)
        {
            if (args!= null && args.Length > 0)
            Console.WriteLine(args[0]);
            Console.ReadKey();
        }
    }
}

Hoffe das spart dir etwas Zeit.

Matas Vaitkevicius
quelle
3
Wow das Ding funktioniert. Und das nicht nur im IE, sondern auch in Chrome!
user1974566
36

Ich denke, dies wird in MSDN behandelt. Weitere Informationen finden Sie unter Registrieren einer Anwendung für ein URL-Protokoll .

Jonas Engström
quelle
5
Ich habe die oauth-basierte Anwendung geschrieben und das im MSDN beschriebene Verfahren funktioniert perfekt mit Mozilla Firefox und Opera (11.6)
Viktor Latypov
11
Dies funktioniert in allen Browsern unter Windows. Es ist eine Sache auf Betriebssystemebene, keine Sache auf Browserebene.
Andrew Dunkman
7
Ich habe zugestimmt, aber bitte bearbeiten Sie die Antwort so, dass sie die relevanten Informationen aus dem Link gemäß der SO-Richtlinie enthält. Vielen Dank!
Dotancohen
Welche Windows-Versionen unterstützen dies?
29 ᆺ ᆼ
21

Der MSDN-Link ist nett, aber die Sicherheitsinformationen dort sind nicht vollständig. Die Handler-Registrierung sollte "% 1" enthalten, nicht% 1. Dies ist eine Sicherheitsmaßnahme, da einige URL-Quellen% 20 falsch dekodieren, bevor Sie Ihren benutzerdefinierten Protokollhandler aufrufen.

PS. Sie erhalten die gesamte URL, nicht nur die URL-Parameter. Neben der bereits erwähnten% 20-> Speicherplatzkonvertierung kann die URL jedoch misshandelt werden. Es ist hilfreich, bei der Gestaltung Ihrer URL-Syntax konservativ zu sein. Wirf kein zufälliges // ein, sonst gerätst du in das Chaos, das file: // ist.

MSalters
quelle
Was genau meinst du mit "Chaos, dass die Datei: //" ist?
Maleev
6
Es gibt keine formale Zuordnung von Datei: URLs zu lokalen Pfaden. Es gibt nicht einmal einen Konsens über die Verwendung von zwei oder drei führenden Schrägstrichen oder die Verwendung von Schrägstrichen vorwärts oder rückwärts, wenn der Pfad auf ein Windows-Verzeichnis verweist.
MSalters
Später Kommentar, ich weiß. Aber ist es auch möglich , ohne den Protokollhandler nur auf die URL-Parameter zuzugreifen ?
Danilo Bargen
2
Das klingt nach einer separaten Frage. Bitte machen Sie Ihre Bedingungen jedoch klar. Der Protokollhandler ist das Programm, das die URL empfängt. "Ohne den Protokollhandler" kann niemand die URL analysieren und auf die URL-Parameter zugreifen.
MSalters