2014-06-27 22 views
11

Tôi đã được giao nhiệm vụ tạo giao thức tương tự như callto :, rằng - khi nhấp vào liên kết với nó - sẽ tự động khởi chạy ứng dụng đã cài đặt.Chạy chương trình URI

Tôi đã theo dõi microsoft guide về cách bố cục trông như thế nào.

chương trình của tôi trông như thế này:

HKEY_CLASSES_ROOT 
    slican 
     URL Protocol = "" 
     DefaultIcon (Default) = "C:\Users\Okabe\Desktop\slican\SlicanP.exe,1" 
     shell 
      open 
       command (Default) = "C:\Users\Okabe\Desktop\slican\SlicanP.exe" "%1"" 

Tôi nghĩ đó là tất cả và thử nghiệm nó với

<a href="slican:test">test link</a> 
<a href="slican:0049325778421">test telephone link</a> 

Không có phản ứng nào. Internet Explorer đã hỏi tôi có muốn tìm kiếm một chương trình có thể mở nội dung và Chrome không trả lời gì, như thể tôi đã nhấp vào javascript: void (0).

Làm cách nào để làm việc đó?

Cảm ơn sự giúp đỡ của bạn!

+0

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

+1

Đ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. –

+0

@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

Trả lời

14

Đă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

+0

Vậy nguyên nhân sẽ khiến IE và Chrome sẽ không khởi chạy SlicanP.exe của tôi là gì? Chrome thậm chí sẽ không bật lên một câu hỏi nếu tôi muốn chạy một ứng dụng bên ngoài, như IE không ...? Không có trình duyệt nào phản ứng bất cứ điều gì ... – Sates

+0

Bạn đã khởi động lại trình duyệt hay thậm chí là hệ điều hành, sau khi thực hiện các thay đổi trong Registry? –

+0

Vâng, tôi đã làm, đó là lý do tại sao tôi đã rất ngạc nhiên. – Sates

1

nếu bạn đi đến C: \ Users \\ AppData \ Local \ Google \ Chrome \ User Data

Bạn có thể chỉnh sửa tệp Local Local

Tìm kiếm protocol_handler

Cú pháp ở đây là cặp giá trị khóa. Tôi thường sao chép hai mailto: và chắc chắn rằng bạn đặt giao thức của bạn thành false. Điều này có nghĩa là chrome sẽ xử lý các giao thức mới của bạn dưới dạng sự kiện URI_Handler

+2

Điều này dường như không còn hợp lệ nữa. Phiên bản Chrome 59.0.3071.86 (Phiên bản chính thức) (64 bit), tệp Local State không có phần protocol_handler. –

0

Nếu bạn gặp khó khăn khi định cấu hình lược đồ URI tùy chỉnh, bạn có thể so sánh cấu hình của riêng mình với cấu hình hiện có. Ví dụ: "HKEY_CLASSES_ROOT/mailto" - rất có thể bạn đã có nó trong hệ thống của mình.

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