Win7対応について

しばらく更新していませんでしたが、開発は継続中です。


新しいPCを購入したため、その環境構築に少し時間がかかりました。
OSはWindows7 Home Premiumにしたため、このSomaliでも、Win7対応を行います。


目下、最初にぶち当たった問題として、Vista/Win7に搭載されているUACの影響がありました。
一般に、アプリケーションはProgram Filesフォルダ配下にインストールされ、アプリの設定ファイルを同フォルダに置くアプリも少なくありません。
私も特に考えず、同じフォルダに置けばいいかな、と思っていましたが、UACにより、Program Filesフォルダにアプリがファイルを書き出すために毎回管理者権限が必要になることを知りました。
そこで、(行儀正しく)ユーザごとのAppDataフォルダに設定ファイルを書き出す必要があります。
そのフォルダパスを知るコードは次の通り。

using System.Windows.Forms;
using System.IO;

        public void savePreferences()
        {
            string strDirPath = String.Format(@"{0}\{1}"
                    , Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
                    , Application.ProductName);
            //フォルダの存在検査
            if ( !Directory.Exists(strDirPath) )
            {
                //存在しない場合、ディレクトリを生成する
                Directory.CreateDirectory(strDirPath);
            }
            //ファイル処理

        }

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)で、C:\Users\ユーザ名\AppData\Roamingというようなフォルダパスを取得することができます。
詳しくは、アプリケーション設定情報はどこに保存すべきか?:.NET TIPS - @IT参照。