15

http://stackoverflow.comなどのリンクを開くアプリケーションを登録しようとしています。Windows 8 ではこれを明示的に行う必要があります。以前のバージョンの Windows では機能しています。MSDNによると、これは Win8 で変更されました。

MSDN の [既定のプログラム] ページ (msdn.microsoft.com/en-us/library/cc144154.aspx) ページを確認しました。ファイルの種類の処理に関する優れたウォークスルーを提供しますが、プロトコルの詳細については軽視しています。 URL プロトコルへのアプリケーションの登録では、新しいプロトコルのセットアップに関連する手順のみを説明しますが、新しいハンドラーを既存のプロトコルに正しく追加する方法については説明しません。

他の SO 投稿で概説されているレジストリ設定も試しました。

もう 1 つ、アプリケーションは Metro/Windows ストア アプリではないため、マニフェストにエントリを追加してもうまくいきません。

4

3 に答える 3

13

あなたは Default Programs Web ページで正しい道を歩んでいました - 実際、それはこの記事の参考文献です。

以下は、その例を適応させたものです。

ProgIDまず、与えられた入力を処理する方法を指示するinが必要HKLM\SOFTWARE\Classesです (既に存在している可能性があります)。

HKLM\SOFTWARE\Classes
     MyApp.ProtocolHandler //this is the ProgID, subkeys are its properties
        (Default) = My Protocol //name of any type passed to this
        DefaultIcon
           (Default) = %ProgramFiles%\MyApp\MyApp.exe, 0 //for example
        shell
           open
              command
                 (Default) = %ProgramFiles%\MyApp\MyApp.exe %1 //for example

Capabilities次に、キー内の DefaultProgram 情報をレジストリに入力します。

HKLM\SOFTWARE\MyApp
    Capabilities
       ApplicationDescription
           URLAssociations
              myprotocol = MyApp.ProtocolHandler //Associated with your ProgID

最後に、アプリケーションの機能を DefaultPrograms に登録します。

HKLM\SOFTWARE
      RegisteredApplications
         MyApplication = HKLM\SOFTWARE\MyApp\Capabilities

これで、すべての「myprotocol:」リンクがトリガーされ%ProgramFiles%\MyApp\MyApp.exe %1ます。

于 2013-08-28T19:17:41.453 に答える
5

これは、この種の問題をグーグルで調べたときに見つかったトップの回答であるため、サイドノート: 開いているシェルコマンドのパスがアプリケーションへの適切なパスであることを確認してください。Windows 10 の Chrome と Edge にのみ影響すると思われる問題のデバッグに 1 日を費やしました。問題は何でしたか?.bat ファイルへのパスには、\ と / のスラッシュが混在していました。パスに適切な \ スラッシュのみを使用すると、Edge と Chrome が突然リクエストを取得できるようになりました。

于 2015-10-14T15:44:25.933 に答える
-4

LaunchUriAsync(Uri)

指定された URI の URI スキーム名に関連付けられた既定のアプリを開始します。この場合、ユーザーが指定できるようにすることができます。

http://msdn.microsoft.com/library/windows/apps/Hh701476

    // Create the URI to launch from a string.
    var uri = new Uri(uriToLaunch);

    // Calulcate the position for the Open With dialog.
    // An alternative to using the point is to set the rect of the UI element that triggered the launch.
    Point openWithPosition = GetOpenWithPosition(LaunchUriOpenWithButton);

    // Next, configure the Open With dialog.
    // Here is where you choose the program.
    var options = new Windows.System.LauncherOptions();
    options.DisplayApplicationPicker = true;
    options.UI.InvocationPoint = openWithPosition;
    options.UI.PreferredPlacement = Windows.UI.Popups.Placement.Below;

    // Launch the URI.
    bool success = await Windows.System.Launcher.LaunchUriAsync(uri, options);
    if (success)
    {
       // URI launched: uri.AbsoluteUri
    }
    else
    {
        // URI launch failed.  uri.AbsoluteUri

    }
于 2012-12-04T03:22:04.300 に答える