C#のデスクトップアプリケーションでアプリの設定情報やキャッシュ情報(ex取得したhtmlなど)をファイルとしてローカル環境に残しておきたい場合、どこに保存したらいいかについてです。

(環境はOS:WindowsXp,VC#2008EEです)

自分一人で使うアプリケーションだったら自分でローカルフォルダパスを決定すればいいけど、公開して不特定多数の人に使ってもらうようなアプリではそういうわけにはいきません。

.NETではApplicationクラスが以下のように、標準化されているパスを提供してくれます。
(ここでhogeProjectは製品名(プロジェクト名)、hogeUserはユーザ名、1.0.0.0はアプリのバージョン番号です。バージョン番号については後でもう少し詳しく書きます)

//C:\Documents and Settings\All Users\Application Data\hogeProject\hogeProject\1.0.0.0
Application.CommonAppDataPath;
//C:\Documents and Settings\hogeUser\Application Data\hogeProject\hogeProject\1.0.0.0
Application.UserAppDataPath;
//C:\Documents and Settings\hogeUser\Local Settings\Application Data\hogeProject\hogeProject\1.0.0.0
Application.LocalUserAppDataPath;

(hogeProject、1.0.0.0フォルダは自動的に作成されます。)

また、Application.StartupPath は、アプリケーションを起動した時にそのアプリケーションが存在するフォルダのパス情報ですのでこれも使えるの思えます。実行ファイルのショートカットでももちろん使えます。

参考サイト
アプリケーション設定情報はどこに保存すべきか?
アプリケーションの設定を保存する
Windowsアプリケーションの位置やサイズを保存するには?

あと、アプリケーションのバージョン情報(上の例では1.0.0.0の部分)についてですが、この情報はApplication.ProductVersionで取得できます。

このバージョン情報の変更は、AssemblyInfo.csファイル、もしくは、ソリューションエクスプローラのPropertiesファイルを開く⇒「アプリーケーション」タブ⇒「アセンブリ情報」ボタンを押して「アセンブリ情報」ウインドウでできます。
初期状態(自分の場合)では、アセンブリバージョン(AssemblyVersion)、ファイルバージョン(AssemblyFileVersion)の二つがあり、これをいじることで変更可能です。

Application.ProductVersionは「ファイルバージョン」の方が優先して反映されているみたいです。アセンブリバージョンの方を反映させたい場合(アセンブリバージョンで統一したい場合)、AssemblyInfo.csファイルのファイルバージョン(AssemblyFileVersion)の設定行をコメントアウトすればできます。

参考サイト
アセンブリにバージョン情報を設定するには?

C#のおすすめ本の紹介
Visual C# 2008逆引き大全555の極意/池谷 京子
¥2,730
Amazon.co.jp

Visual C# 2008 逆引きクイックリファレンス Windows Vista/XP対応/きたみ あきこ
¥3,360
Amazon.co.jp