2008-09-17 27 views
40

Làm cách nào để đăng ký giao thức tùy chỉnh với Windows để khi nhấp vào liên kết trong email hoặc trên trang web, ứng dụng của tôi được mở và thông số từ URL được chuyển đến nó?Làm cách nào để đăng ký giao thức URL tùy chỉnh trong Windows?

+0

Bản sao có thể có của [làm cách nào để tạo giao thức URL của riêng tôi? (ví dụ: // ...)] (http://stackoverflow.com/questions/389204/how-do-i-create-my-own-url-protocol-eg-so) –

Trả lời

23

Tôi nghĩ rằng điều này được đề cập trong MSDN, vui lòng xem Registering an Application to a URL Protocol.

+0

Điều này sẽ chỉ hoạt động cho I E. – Oded

+5

Tôi đã viết ứng dụng dựa trên oauth và quy trình được mô tả trong MSDN hoạt động hoàn hảo với Mozilla Firefox và Opera (11.6) –

+9

Tính năng này hoạt động trên tất cả các trình duyệt trên Windows. Đó là một điều os-level, không phải là một thứ cấp độ trình duyệt. –

19

Liên kết MSDN đẹp, nhưng thông tin bảo mật chưa hoàn thành. Việc đăng ký trình xử lý phải chứa "% 1", không phải% 1. Đây là một biện pháp bảo mật, bởi vì một số nguồn URL giải mã không đúng% 20 trước khi gọi trình xử lý giao thức tùy chỉnh của bạn.

PS. Bạn sẽ nhận được toàn bộ URL, không chỉ các tham số URL. Nhưng URL có thể phải chịu một số sự ngược đãi, ngoài việc chuyển đổi không gian% 20-> đã đề cập. Nó giúp bảo thủ trong thiết kế cú pháp URL của bạn. Đừng ném ngẫu nhiên // hoặc bạn sẽ nhận được vào mớ hỗn độn mà tập tin: // là.

+0

Bạn có ý nghĩa gì chính xác bởi "mess that the file: //" là? – Maleev

+5

Không có ánh xạ chính thức của tệp: URL đến đường dẫn cục bộ. Thậm chí không có sự đồng thuận về việc sử dụng hai hoặc ba dấu gạch chéo hàng đầu, hoặc việc sử dụng dấu gạch chéo tiến lên so với trước khi đường dẫn đề cập đến một thư mục Windows. – MSalters

+0

Nhận xét muộn, tôi biết. Nhưng nó cũng có thể bằng cách nào đó truy cập các tham số URL * chỉ * mà không có trình xử lý giao thức? –

10
  1. Đến Start sau đó trong Find loại regedit -> nó sẽ mở Registry editor

  2. Bấm Ngay Chuột trên HKEY_CLASSES_ROOT sau đó New ->Key

enter image description here

.210
  1. Trong Key cho tên chữ thường mà bạn muốn url được gọi là (trong trường hợp của tôi nó sẽ testus://sdfsdfsdf) sau đó Click Ngay Chuột trên testus -> sau đó New ->String Value và thêm URL protocol không có giá trị.

enter image description here

  1. Sau đó thêm các mục như bạn đã làm với giao thức (Ngay ChuộtNew ->Key) và tạo hệ thống cấp bậc như testus ->shell ->open ->command và bên trong command thay đổi (Default) thành đường dẫn nơi .exe bạn muốn khởi chạy là, nếu bạn muốn chuyển tham số tới exe của mình, sau đó quấn đường dẫn đến exe trong "" và thêm "%1" để trông giống như: "c:\testing\test.exe" "%1"

enter image description here

  1. Để kiểm tra xem nó hoạt động đi đến Internet Explorer (không Chrome hoặc Firefox) và nhập testus:have_you_seen_this_man này nên bắn .exe của bạn (cung cấp cho bạn một số lời nhắc rằng bạn muốn làm điều này - nói Có) và chuyển vào args testus://have_you_seen_this_man.

Dưới đây là mẫu giao diện điều khiển ứng dụng để kiểm tra:

using System; 

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

Hy vọng điều này giúp bạn tiết kiệm một chút thời gian.

Các vấn đề liên quan