none
C# COM Win32 トーストの管理者権限での動作について RRS feed

  • 質問

  • 私が調べた限り、初歩的な事なのか情報を見つけることができなかったので

    こちらにて質問させていただきます。

     

    hoge.exe上で

    デスクトップ C# アプリからのローカル トースト通知の送信

    を参考にトースト通知を組み上げた。

     

    この際、hoge.exeはWPFアプリではないため、

    WPFに該当する部分は置き換えた。

    念のため現在問題が発生しているプログラムではなく、

    新たにhoge.exeを上記ページを参考に組み上げた。

     

    タイトルの通り、Win32からトーストを起動した際、

    管理者権限ではない通常の権限で起動した場合は

    トーストをクリックした場合にhoge.exeに処理が返るのですが、

    管理者権限でhoge.exeを起動、トーストを表示した場合、

    トーストから管理者権限で起動中のhoge.exeにアクセスできず、

    新しいhoge.exe が-ToastActivated引数付きで起動してしまいます。

     

    Toastを表示するCOMを生成している部分は

    上記URL中の

    DesktopNotificationManagerCompat.cs file from GitHub

    の部分であり、

    C#でUACの昇格可能なEXEのCOMオブジェクトを作成する方法

    を参考に

            private static void RegisterComServer<T>(String exePath)

    部分に

                //////////
                //Add UAC Object
                key.SetValue("LocalizedString","@" + exePath + ",-101", Microsoft.Win32.RegistryValueKind.String);

                // Elevation
                using (var subkey = key.CreateSubKey("Elevation"))
                {
                    subkey.SetValue("Enabled", 1, Microsoft.Win32.RegistryValueKind.DWord);
                }
                //////////

    を追記してみましたが、

    こちらもトースト自体が管理者で起動していないのか

    管理者で起動しているhoge.exeに処理を返せませんでした。

    [まとめ]

    ==========

    管理者で実行していないとき:

    hoge.exe→トースト起動→トーストをクリック→hoge.exeに処理が戻る

     

    管理者で実行しているとき:

    hoge.exe→トースト起動→トーストをクリック→

    hoge.exeにアクセスできずに新しくhoge.exeが-ToastActivated引数付きで起動する

    ==========

    どなたか解決策をアドバス頂けると大変助かります。






    2018年10月31日 21:35