Wie registriere ich ein benutzerdefiniertes Protokoll mit Windows, so dass beim Klicken auf einen Link in einer E-Mail oder auf einer Webseite meine Anwendung geöffnet wird und die Parameter von der URL an sie übergeben werden?Wie registriere ich ein benutzerdefiniertes URL-Protokoll in Windows?
Antwort
Ich denke, das ist in MSDN abgedeckt, siehe Registering an Application to a URL Protocol.
Dies funktioniert nur für IE. – Oded
Ich schrieb die oauth-basierte Anwendung und das in der MSDN beschriebene Verfahren funktioniert perfekt mit Mozilla Firefox und Opera (11.6) –
Dies funktioniert in allen Browsern unter Windows. Es ist eine os-Level-Sache, keine Browser-Level-Sache. –
Die MSDN-Verbindung ist nett, aber die Sicherheitsinformationen sind nicht vollständig. Die Handlerregistrierung sollte "% 1", nicht% 1 enthalten. Dies ist eine Sicherheitsmaßnahme, da einige URL-Quellen% 20 falsch decodieren, bevor Sie Ihren benutzerdefinierten Protokollhandler aufrufen.
PS. Sie erhalten die gesamte URL und nicht nur die URL-Parameter. Aber die URL könnte, abgesehen von der bereits erwähnten% 20-> Space-Konvertierung, etwas missbraucht werden. Es hilft, in Ihrem URL-Syntaxentwurf konservativ zu sein. Werfen Sie nicht zufällig // oder Sie werden in das Chaos geraten, dass Datei: // ist.
Was genau meinen Sie mit "Chaos, dass die Datei: //" ist? – Maleev
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 Vorwärts- oder Rückwärtsstrichen, wenn der Pfad auf ein Windows-Verzeichnis verweist. – MSalters
Später Kommentar, ich weiß. Aber ist es auch möglich, irgendwie auf die URL-Parameter * nur * zuzugreifen, ohne den Protokoll-Handler? –
Zum
Start
dann inFind
Typregedit
-> sollte es öffnenRegistry editor
Klicken Sie rechte Maus auf
HKEY_CLASSES_ROOT
dannNew
->Key
- Im Schlüssel den Klein Namen geben, mit denen Sie Urls wollen aufgerufen werden (in meinem Fall wird es
testus://sdfsdfsdf
), dann klicken rechte Maus auftestus
-> dannNew
->String Value
und fügen SieURL protocol
ohne Wert hinzu.
- Dann weitere Einträge hinzufügen, wie Sie mit Protokoll taten (rechte Maus
New
->Key
) und Hierarchie erstellen wietestus
->shell
->open
->command
und innerhalbcommand
ändern Sie(Default)
in den Pfad, wo.exe
Sie starten möchten, ist, wenn Sie Parameter an Ihre Exe übergeben wollen, dann wrappen Sie den Pfad zu exe in""
und fügen Siehinzuwie folgt aussehen:"c:\testing\test.exe" "%1"
- Um zu testen, ob sie gehen zu
Internet Explorer
(nichtChrome
oderFirefox
) funktioniert, und geben Sietestus:have_you_seen_this_man
das Feuer sollte Ihre.exe
(geben Sie einige Aufforderungen, dass Sie dies tun möchten - sagen Sie ja) und übergeben Sie in Argstestus://have_you_seen_this_man
.
Hier Probe Konsole App-Test:
using System;
namespace Testing
{
class Program
{
static void Main(string[] args)
{
if (args!= null && args.Length > 0)
Console.WriteLine(args[0]);
Console.ReadKey();
}
}
}
Hoffnung das spart Ihnen einige Zeit.
Mögliche Duplikate von [Wie erstelle ich mein eigenes URL-Protokoll? (zB so: // ...)] (http://stackoverflow.com/questions/389204/how-do-i-create-my-own-url-protocol-eg-so) –