🌸

サクラエディタで設定変更が保存されない原因と解決方法

2021/08/08に公開

現象

サクラエディタで設定変更しても、終了してまた開くと設定が元に戻ってしまう。
※設定 ・・・ フォントや色設定などタイプ別設定や共通設定

原因

インストール時に 「✔ 設定をユーザ毎に個別に管理する」 のチェックを外した。

解決方法

サクラエディタを再インストールする。インストーラ版をダウンロードすること。

https://github.com/sakura-editor/sakura/releases

SakuraEditor ダウンロード Installer zip

SakuraEditor インストール 設定をユーザ毎に個別に管理する

SakuraEditor インストール VirtualStore 無効


調査の流れ

  • 「サクラエディタ 設定 保存されない」で検索。 sakura.ini まわりが怪しい
  • アプリ内の設定ダイアログからいくら設定を変更しても C:\Program Files (x86)\sakura\sakura.ini の更新日時が変わらなかった
  • アプリから参照されている設定ファイルが別にあると仮説を立てる
  • Everythingを使って sakura.ini を探索。 C:\Users\<ユーザー>\AppData\Local\VirtualStore 配下に見つけた。[2] が、こちらも更新日時が変更されていなかった。
  • さらに検索すると管理者権限がどうこうと出てくる
  • sakura.ini をサクラエディタで開くと 上書き禁止 となっていた
  • 試しに sakura.exe を管理者権限で起動し、設定(フォントサイズ)を変更しても sakura.ini の更新日時は変わらなかった。しかし、サクラエディタを終了すると更新日時が現在のものに変わった
  • 設定変更のタイミングはサクラエディタすべてのプロセス終了時であることを確認
  • 通常の起動方法では書き込めないから設定変更が保存できていないと仮説を立てる
  • 設定ファイルが複数ある状態だったので、そもそも設定フォルダはどれと認識しているか調べた
  • 公式ヘルプ 設定フォルダ を確認。
    • ユーザー別設定になっているときには、共通設定・タイプ別設定の設定ダイアログ左下に設定フォルダボタンが表示されます。
      ボタンが表示されない場合は、設定フォルダは sakura.exe と同じフォルダになります。

  • 確かに、サクラエディタの設定変更が保存される別のPCにはタイプ別設定ダイアログの左下に「設定フォルダ」ボタンがあるのに、問題のPCには表示されていない
  • 公式ヘルプ ユーザー別設定 にVirtual Storeの記述を発見
  • 公式ヘルプ Virtual Store について読んで、これが原因であると判断

Virtual Store について

SakuraEditor VirtualStore

互換モードでインストールします. システムファイルおよびプログラムをユーザ権限で編集すると編集結果が他のアプリケーションから参照できないことがあります. (VirtualStore機能)

これだけを読んでも何を言っているのかよくわからないが、Virtual Storeにて説明されている問題や注意事項を読むと、特殊な事情でもない限り推奨されないということがわかる。おそらく、問題が起きたこのPCは自分以外が使用することはないという意図でチェックをわざわざ外していたのだと思う。

Virtual Storeモードのとき設定ファイルはここにあった。

C:\Users\<ユーザー>\AppData\Local\VirtualStore\Program Files (x86)\sakura\sakura.ini

再現性を確認するために再インストールでチェックを外してみたが、ここにはできなかった。条件不明。

おわりに

この解決方法だと、とりあえずアンインストールしてデフォルト設定のまま再インストールすれば直る、とも言えます。Google検索のキーワード候補から察するに、同様に設定変更が維持できずに困っておられる方もたくさんおられるのでしょう。もしかしたらこの事象とは違うのかもしれませんが、少し踏み込んだ仕組みを示しましたので、参考になれば幸いです。

私の作ったサクラエディタの設定ファイルはこちら。随時更新中です。

https://github.com/syon/sakura-petals

脚注
  1. VirtualStoreの有効/無効で設定ファイル名が sakura.inisakura.exe.ini の2つ存在することになり紛らわしいため ↩︎

  2. VirtualStoreという単語が中に入っているが、このとき何なのか知らず ↩︎

Discussion