4

私のシステムの問題かもしれませんが、Windows 7 に私のカスタム exe を mailto プロトコルのデフォルト ハンドラとして認識させるのに非常に苦労しています。

最初に、私はこれを見ました: Register Windows program with the mailto protocol programmatically

次に、私はこれらを見てきました:

適切なレジストリ エントリと思われるものを追加しましたが、mailto リンクをクリックするたびに Windows Live メールが表示されます (ブラウザーまたは [ファイル名を指定して実行] ウィンドウを使用)。すべてのユーザーと現在のユーザーのレジストリ エントリを設定しましたが、まだ機能しません。

「既定のプログラム」アプリに移動し、mailto プロトコルまで下にスクロールすると、Outlook と Windows Live メールだけが表示されます。カスタム アプリも表示されません。

これは、Windows 7 の特殊な機能か、私のコンピューターの機能のどちらかだと思います。

私のカスタム アプリは WinForms .Net アプリですが、それは問題ではないと思います。

どんなアイデアでも大歓迎です。

4

4 に答える 4

2

質問で参照した回答で説明されている方法は、他のオペレーティング システムと同様に、Windows 7 で正しい方法のようです。

Windows 7 の 64 ビット バージョンを使用していて、プログラムが 32 ビット アプリケーションであるとします。したがって、アプリケーションがキーを書き込むと、32 ビット アプリケーションに使用されるHKEY_LOCAL_MACHINE\SOFTWARE\Classes\mailto\shell\open\commandキーのみが変更されます。HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\mailto\shell\open\commandレジストリ仮想化の詳細については、こちらこちらをご覧ください。

あなたの場合は、32 ビット オペレーティング システムでは無視されるKEY_WOW64_64KEYフラグを使用して、ネイティブの Win32 API RegOpenKeyExを直接呼び出すことができます。

于 2011-08-18T11:16:44.400 に答える
1

かなり遅い答えですが、私にとってうまくいったのはこれです:regeditでは、これは他の回答で言及されているレジストリキーに取って代わります:

HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\URLAssociations\MAILTO\Userchoice

このページを見てください: デフォルトの Mailto レジストリ

于 2015-05-06T08:06:51.370 に答える
0

Windows でカスタム URL ハンドラーを追加するにはどうすればよいですか。iTunes のように itms://関連しますが、関連しません。

于 2011-08-18T09:42:18.943 に答える
-1

これは、かなり一般的な問題に対する非常に高度なオタク レベルのコンテキストのように思えます。オタクとして、私は 64 対 x86 と .net の疑似ユニバーサル バイナリの側面に関する議論に夢中になっています。しかし、私の技術サポートのトラブルシューティング担当者は、中心的な問題を明確にし、体系的に対処する必要があると思わずにはいられません...

したがって、メールクライアントに関係なく(あなたが言ったように)、CPUに関係なく、あなたの本当の問題は、メールクライアントをmailtoのデフォルトのプロトコルハンドラーにできないことです。または、本当に簡単にするために、好きなプログラムをデフォルトのプログラムにすることはできません。

私は、問題の 64/86 の側面は関係ないと考える傾向があります。それらは興味深いものであり、何らかの効果がある可能性がありますが、プログラムが正常に動作している場合 (そのアーキテクチャのコードに問題がないなど)、および電子メールが正常に実行されている場合 (電子メールの送受信、すべての SMTP および IMAP のすべて)道)、それなら、OSがクライアントがポーチの犬のリーダーとして引き継がれるのを防ぐことを計画しているとは思えません.

どちらかといえば、クライアントには自尊心の問題があり、mailto プロトコル ハンドラーになることを恐れていると言えます。ほとんどのクライアントは、 をプライマリにするかどうかを尋ねずにはいられません。あなたが「はい」と答えると、その言葉を他のアプリやレジストリに渡します。彼らは、彼らが家の新しいメールボックス王であることを誰もが知っていることを確認します.

したがって、最初に試すこと (基本的なトラブルシューティング): 別のメール クライアントをインストールして、同じ問題があるかどうかを確認します。もしそうなら、あなたのOSはいじめっ子であり、そのようなルートを探索したいと思うでしょう.

しかし、この別のクライアントがデフォルト プログラム クラブに入り、mailto ハンドラーになることができる場合、問題はアプリにあります。きちんと自己主張の仕方を知らない大弱虫です。

しかし、クールな子供が自分たちを翼の下に連れて行くのを待っている多くの弱者のように (翼とは、Thunderbird を意味します。他のクライアントを気にしないでください)、あなたのアプリは、動作しているサードパーティ クライアントの肩の上に立つことができます。

Thunderbird は、アプリが実行しなかったことを少なくとも 1 つ、場合によっては 2 つ実行したと想定する必要があります。1 つ目は、レジストリ内のプロトコルに関連付けられた名前を取得することでした。彼の名前と、それが mailto プロトコルにどのように関連付けられているかを調べてみてください。彼の名前をあなたの名前に置き換えるか、少なくともプロトコルをあなたに固定しようとする可能性は十分にあります.

T-Bird が行った可能性のある 2 番目のことは、自分自身を「既定のプログラム」リストに登録することでした (7 の機能はあまり好きではありませんでした。その背後にクールなコンセプトがあったためです。つまり、アプリをグループ化しましょう)。そのうちの 1 人が同様の仕事をすることができるかどうか、毎回待って見るのではなく、フロント.この二人はこのグループに入るべきだと思いませんか?」

ええと、Thunderbird から借用して mailto にアクセスできるようになることで、デフォルト プログラム クラブに歓迎されることを願っています。 、その問題に取り組もうとする前に、少なくとも1、2週間はそれについてうめき声を上げてください.

さて、Thunderbird が mailto の制御を取得できない場合、Windows 7 は、アプリケーションとそのインストーラー (ユーザーなど) が何らかの方法で自分の価値を証明しなければならない、ある種の奇妙なカースト制度を実際に導入したと考える傾向があります。大きな秘密が何であるかを理解することによって、グループに参加すること。

ああ、他のすべてが失敗した場合は、ネットワークなしでセーフ モードで再起動し、その環境にクライアントをインストールして起動してみてください。他の人がアニメーションを一時停止している間にデフォルトにできないかどうかを確認してください。mailto を使用して基本的な HTML ページを作成し、それをクリックしてクライアントが開くかどうかを確認して、テストを実行します (もちろん、ネットワークは使用しません)。

次に、通常モードに戻って起動するときに指を交差させます。

上記のいずれかが役に立たなかった場合はお知らせください。

于 2011-09-28T09:33:09.230 に答える