Windowsでインストーラーなしのソフトをどこに置くか

yamy とか PuTTY とか、
インストーラーがついていなくて自分で解凍して適当なディレクトリに配置する
ようなソフトウェアを、Program Files の中に手動で置いていたけど、
それだと不都合があることがわかってきたのでまとめておく。

これらのプログラムは、設定変更されたときに実行ファイルと同じ場所に
設定ファイルを書き出すらしい。
どうも Program Files の中のファイルは権限的に書き込みできないようなので、
反映しない。エラーも出ない。
自分で置いたディレクトリなのに…。

環境

  • 環境: Windows 7
  • ユーザーアカウント制御の設定: 既定 – プログラムがコンピューターに変更を加えようとする場合のみ通知する (上から2番目)
  • yamyなど、インストーラーを持たない、かつ、実行ファイルと同じディレクトリのファイルに書き込みをしようとする場合

調査

yamy の設定ファイル を例に説明する。

yamy には設定を選べるUIがあって、これを編集するUIもある。

yamyの選択メニュー

yamyの選択肢設定画面

ただ、現状、これに追加しようとしても反映しない。
おそらく c:\Program Files\yamy\yamy.ini に書き込まれるはず。
これの権限を調べると、一般ユーザーには「読み取りと実行」しかついていない。
このせいかなぁ。
Program Files以下の権限

ためしに c:\ProgramPortable\ 以下に入れてみる。
このディレクトリは、単に c:\ 以下に何も考えずにディレクトリを作っただけ。
入れ方は、ダウンロードフォルダ内で zip を展開して、
できたディレクトリを「移動」した。

あ。うまくいった。
Authenticated Users に変更がついているからかな。
ProgramPortable以下の権限

おそらく、c:\ の権限より、 c:\Program Files の権限の方が
厳しいものになっているからだと思う。

Windows 7新時代:第8回 Windows XP → 7移行のアプリケーション・トラブル解決法 (1/2) – @IT
これのケース3に書かれていることだと思う。

場所は関係なくて、結局アクセス権限の問題なんだろうけど、
まあこれでうまくいったし、
Program Filesの中に入れてそれぞれ権限考えるのはちょっと面倒なので、
手動で入れるものは c:\ProgramPortable に入れるようにしよう。

もちろんこのPC使うのが自分だけだから、あまり考えずにそうしているわけだけど。
そもそも Program Files 以下に設定置くようなプログラムは、
マルチユーザーでは使えないのか。
だったら、もういっそ個人ディレクトリの下に置いたほうが正解なのなかぁ。

とりあえず、以下の方針で行こう。

  • インストーラーがついているソフトはそれに従う。 Program Files など
  • インストーラーがついてないものは、c:\ProgramPortableに入れる
  • インストーラーがついてないものは、c:\Users\ユーザー名\ProgramPortable に入れる