Đăng ký bạn hiển thị hoạt động hoàn toàn tốt cho tôi khi tôi dùng thử trên Windows 7. Ứng dụng cục bộ mà tôi đăng ký thay cho SlicanP.exe chạy tốt khi tôi gọi URL slican:
từ menu Start | Run
và từ trong địa chỉ thanh của Windows Explorer. Vì vậy, việc đăng ký hoạt động.
Lưu ý rằng Internet Explorer chạy trong ngữ cảnh bảo mật toàn vẹn thấp hơn, do đó, nó có thể không có quyền chạy các chương trình cục bộ. Khi tôi cố gắng nhấp vào liên kết HTML đến URL slican:
hoặc nhập URL slican:
trong thanh địa chỉ, IE gặp sự cố khi chạy ứng dụng cục bộ (ngay cả sau khi đã yêu cầu quyền). Tôi đã phải chạy IE với tư cách là quản trị viên, sau đó ứng dụng cục bộ chạy tốt.
Ngoài ra, bạn thực sự không nên tạo khóa HKEY_CLASSES_ROOT\slican
trực tiếp. Tạo một HKEY_CURRENT_USER\Software\Classes\slican
(chỉ người dùng hiện tại) hoặc HKEY_LOCAL_MACHINE\Software\Classes\slican
(tất cả người dùng) thay thế. Tham khảo MSDN để biết thêm chi tiết:
HKEY_CLASSES_ROOT Key
Merged View of HKEY_CLASSES_ROOT
Cập nhật: Kể từ khi nó hoạt động trong Windows 7, Microsoft có lẽ đã thay đổi như thế nào chương trình URL đã được đăng ký trong Windows 8. Ví dụ, điện thoại/cửa hàng ứng dụng sử dụng kích hoạt URI:
URI activation (XAML).
URI activation (HTML)
The documentation nói rằng có hai cách để đăng ký một URI scheme tùy chỉnh:
Internet Explorer sử dụng hai cơ chế để đăng ký xử lý giao thức pluggable mới. Phương pháp đầu tiên là đăng ký tên lược đồ URI và ứng dụng liên quan của nó để mọi nỗ lực điều hướng đến URI sử dụng lược đồ đó khởi động ứng dụng (ví dụ, đăng ký ứng dụng để xử lý mailto: hoặc tin tức: URI). Phương thức thứ hai sử dụng API giao thức không đồng bộ Pluggable, cho phép bạn định nghĩa các giao thức mới bằng cách ánh xạ lược đồ URI cho một lớp.
Bạn đang thực hiện thao tác đầu tiên. Hãy thử sử dụng thứ hai thay thế.Tuy nhiên, tôi chỉ nhận thấy rằng "Giao thức Pluggable không đồng bộ" được liệt kê trên MSDN trong phần "API cũ" và có ghi chú sau: "Triển khai giao thức của bên thứ ba sẽ không tải trong ứng dụng Windows Store sử dụng JavaScript , hoặc trong Internet Explorer trong giao diện người dùng Windows mới. ". Vì vậy, nó có thể hoặc có thể không làm việc trong Windows 8.
Cập nhật: Tôi chỉ thấy câu này:
Guidelines for file types and URIs
Trong Windows 8, mối quan hệ giữa các ứng dụng và các loại tập tin mà họ hỗ trợ khác từ các phiên bản trước của Windows.
Walkthrough: using Windows 8 Custom Protocol Activation
Các loại tập tin và mô hình hiệp hội giao thức đã thay đổi trong Windows 8. Apps không còn khả năng để lập trình thiết lập mình như xử lý mặc định cho một loại tập tin hoặc giao thức. Thay vào đó, bây giờ người dùng luôn kiểm soát những gì trình xử lý mặc định dành cho loại tệp hoặc giao thức.
Ứng dụng của bạn có thể sử dụng các giao thức hiện có để liên lạc, chẳng hạn như mailto hoặc tạo giao thức tùy chỉnh. Tiện ích kích hoạt giao thức cho phép bạn xác định giao thức tùy chỉnh hoặc đăng ký để xử lý giao thức hiện có.
Cũng có một cái nhìn lúc này:
Setting mailto: protocol handler programmatically in Windows 8
Và đây:
Default Programs
Bạn đang thiếu '//' sau dấu hai chấm trong các liên kết của mình. Nó phải là 'slican: // test' – TLama
Điều đó không đúng. Nếu bạn đọc [đặc tả URI] (http://tools.ietf.org/html/rfc3986), [phần 3.2] (http://tools.ietf.org/html/rfc3986#section-3.2) nói riêng, sự hiện diện của '//' sẽ biến 'test' thành một tên máy chủ từ xa. 'slican: test' là cú pháp thích hợp để gọi một ứng dụng tùy chỉnh trên máy cục bộ với' test' như một tham số đầu vào. –
@Remy, không biết ý nghĩa đó. Cảm ơn! Tuy nhiên, ngay cả khi không biết ý nghĩa của những dấu gạch chéo đó, tôi có thể nhớ một trong những giao thức được gọi cục bộ thường được sử dụng nhất, 'mailto'. Tôi nên nghĩ hai lần ... – TLama