3.7.17インストーラー版で、権限が足りずインストール失敗する

  1. 再現手順

    1. MerySetup-x64-3.7.17.exe を昇格(管理者として実行)せずに実行
    2. 「追加タスクの選択」で、"フォルダーのコンテキストメニューに[Mery でファイルから検索]を追加(G)"にチェックを入れてインストール
    3. レジストリキー作成エラーでインストールに失敗する
    レジストリキー作成エラー:
    HKEY_LOCAL_MACHINE¥Software¥Classes¥Directory¥shell¥Mery
    
    RegCreateKeyEx エラー:コード 5.
    アクセスが拒否されました。
    

    User権限でHKLMに書き込もうとしているため失敗すると思われる。exeファイルを右クリックの管理者として実行した場合、このエラーは発生しない。

    User権限で[Mery でファイルから検索]にチェックを入れずインストールした場合もエラーは発生しないため、[Mery でファイルから検索]用のレジストリキーを書き込む際の動作に問題があると考えられる。

    3.7.17以外のインストーラーでは、この動作を試していないため挙動は不明。

     |  BHCrusher1  |  返信
  2. ご報告ありがとうございます。

    いただいた手順で、こちらでも現象を確認できました。

    インストーラー自体は長い間変えていないので、Ver.3.7.17 に限らず、ほかのバージョンでも同じことが起こると思われます。(Ver.3.7.13 でも同じ現象を確認できました)

    実はこの件、以前 X のほうで別のユーザーさん (だと思います) からエラーのスクリーンショットをいただいていたのですが、再現手順がわからず、Ver.3.7.13 では問題なし、という内容だったため、こちらでは再現できず対応できていない状態でした。

    > User権限で[Mery でファイルから検索]にチェックを入れずインストールした場合もエラーは発生しないため、[Mery でファイルから検索]用のレジストリキーを書き込む際の動作に問題があると考えられる。

    そのようですね。調べてみたところ…

    インストーラーは VSCode やサクラエディタさんと同じツールで作っていますが、VSCode は昇格 (管理者権限での実行) がない場合、HKCU に書き込む仕様になっていました。

    一方、サクラエディタさんは昇格がない場合でも HKLM に書き込むコードになっていて、それで問題なく動作していたため、そちらを参考にしてしまったようです。

    …が、どうやらサクラエディタさんのインストーラーは内部で勝手に昇格する仕組みになっているようで、その点を完全に見落としていました。

    試してみたところ、HKCU でも [Mery でファイルから検索] は動作できるようなので、もう少し検証は必要ですが、次のバージョンで修正できるよう対応します。少しだけお待ちくださいね。

     |  Kuro  |  返信
スポンサーリンク