3

Windows 8 より前では、プロトコル ハンドラーを追加する方法mailto:は簡単でした (ここで概説されているように、プログラムで Windows プログラムを mailto プロトコルに登録します) 。

Windows 8 以降、古い方法は機能しなくなりました。Win8 は次のキーを強制しているようです: HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\URLAssociations\‌​MAILTO\UserChoice.

またProgID、選択したアプリの はハッシュ化されており、偽造できないようです。少なくとも私にはわかりません。

誰かがこれに有効な方法を持っていますか、またはプログラムでこれを達成する方法を概説するユーティリティクラス/コードを教えてもらえますか?

コードについては、どの言語でもかまいません。

編集

他のディスカッションからユースケースを指定するように求められたので、この質問のコンテキストで役立つと思います. このスクリーンショットhttps://github.com/shellscape/Gmail-Notifier-Plus/raw/master/Promotional/prefs-account.pngと、ユーザーが mailto 処理を指定できるチェックボックスを検討してください。このユースケースでは、誰もユーザーに強制することはなく、ユーザーが管理し、決定を下します。Windows 8 ストア アプリ (metro/modern) には、上記の不足しているプロセスを自動化する利用可能なアプリ マニフェスト エントリがありますが、デスクトップ アプリ用には何も存在しないようです。

4

4 に答える 4

5

アプリケーションがカスタム プロトコル (mailto: など) によってアクティブ化されるように設定できます。ユーザーがアプリをインストールするときに、そのプロトコルをサポートするアプリが他にない場合、プロンプトは表示されず、自動的にそのプロトコルに割り当てられます。

ただし、ユーザーがそのプロトコルを処理するアプリを既に持っている場合は、そのプロトコルをサポートするアプリのリストと、デフォルトを選択するオプションが表示されます。ユーザーに特定の選択を強制することはできません。

また、ユーザーがプロトコル (myprotocol: など) をクリックしたときに、そのプロトコルを処理するアプリがインストールされていない場合は、そのプロトコルをサポートするすべてのアプリを自動的に検索するストア (アプリ) に送信されます。次に、ユーザーは必要なものをインストールします。ユーザーに特定の選択を強制することはできません (存在する場合)。

プロトコルのアクティベーションに関する記事を書きました。あなたにとって興味深いかもしれません: http://blog.jerrynixon.com/2012/10/walkthrough-using-windows-8-custom.html

于 2013-01-11T06:08:05.283 に答える
1

そこで、HKCU\Software\Clients\StartMenuInternet\FIREFOX.EXE\Capabilities\URLAssociations に文字列値 "mailto" を追加し、"mailto" の値をProgID または「FirefoxURL」。次に、HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\URLAssociations\‌ MAILTO\UserChoice のキーを削除して、既定のクライアントを再度選択できるようにしました。今回は、Firefox を選択できるようになりました。

この質問の本質は、どのプロトコルでもデフォルトのクライアントを引き継ぐことができないということのようです (Windows 8 以降)。ユーザーは選択する必要があります。ただし、OS の規則を破りたい場合は、コールをフックしてデフォルトの選択ダイアログを作成することができます。これは、調査、労力を要し、一時的なものに過ぎず、OS を「破る」必要があります。または、double を送信することもできます。ダイアログをクリックしてユーザーを選択します。ただし、プログラムが管理者ウィンドウにクリックを送信できるように昇格された権限を持っていると仮定します。これがおそらく最も簡単な方法です。ユーザーは何が起こったのかを知ることができず、ほんの一瞬だけです。実際には、自分自身をプロトコル ハンドラとして登録した後は、プログラムがデフォルトのプロトコル ハンドラ レジストリ エントリを削除して、ユーザーに再選択を強いる以上のことはすべきではないと思います。

于 2013-05-03T16:01:35.260 に答える
1

これは、Windows 8、8.1、2012、2012R2 で mailto プロトコルを手動で簡単に設定する方法です。

新しいレジストリ ブランチを追加するHKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\mailto\UserChoice

次にmailto:、Web ブラウザーの任意のリンク (IE など) をクリックすると、最後にプログラム リストが表示され、以前は利用できなかったものを選択できます。

また、MAILTO は、コントロール パネル\すべてのコントロール パネル項目\既定のプログラムに表示されるようになりました。そこからプロトコルを追加/削除する他のオプションはありません。

于 2016-11-29T11:04:48.423 に答える
0

Windows 8 では、アプリでファイルの関連付けを直接引き継ぐことはできなくなりました。Windows ストア アプリケーションとデスクトップ アプリケーションの両方でこれを処理する方法については、http: //msdn.microsoft.com/en-us/library/のガイドラインを参照してください。 Windows/アプリ/hh700321.aspx

于 2013-01-09T20:15:30.440 に答える