設定ファイル保存のための実行ファイルパス探し

設定ファイルを実行ファイルと同じフォルダに入れるアプリ。マルチユーザシステムであるはずの現在のWindowsでもそれをやるアプリがけっこう多くて、非常にうっとおしいんですが、レジストリを使ったアプリよりもアンインストールしやすいですし、外部記憶に置けば設定ファイルごと持ち運べるというメリットもあって、シングルユーザ前提の環境なら妥当だとも思います。
Windows Mobile はシングルユーザシステムですし、あまり使わないソフトは外部記憶に置いておきたい人が多いと思うので、設定ファイルを実行ファイルと同じフォルダに作ることにしました。しかし、その際に .NET Framework で実行ファイルのパスを調べるためによく使われる System.Reflection.Assembly.GetExecutingAssembly().Location が .NET Compact Framework には存在しないという問題にぶつかりました。*1
他に考えられる設定ファイルの保存場所として、構成ファイル(System.Configuration.ConfigurationSettings周辺)を使う方法もありますが、こちらも Compact Framework では使えません。また、Windows と違って Windows Mobile には設定データ保存用のフォルダ(\Documents and Settings\(UserName)\Application Data)もありません。
これでは少し困るので、どうにかして実行ファイルのパスを調べるコードを書いてみました。

private string GetAssmblyDirecrtory()
{
    System.Reflection.Assenbly asm = System.Reflection.Assembly.GetExecutingAssembly();
    return System.IO.Path.GetDirectoryName(asm.GetName().CodeBase);
}

AssemblyNameクラスが使えるということに気づかず、以前は少し変なコードで同じような機能を実現していました。一応、そちらの方も記載しておきます。こちらよりも前者のコードの方が安全だと思います。

private string GetMyAppDir()
{
    System.Reflection.Module m = System.Reflection.Assembly.GetExecutingAssembly().ManifestModule;
    return System.IO.Path.GetDirectoryName(m.FullyQualifiedName);
}

他に設定を保存する方法として、レジストリを使うとか、適当なディレクトリ(例えば My Documents )に決めうちでファイルを作ってしまうというものもありますが、この辺は一長一短ですね。

*1:しかもこの件について調べてる途中で Directory.GetCurrentDirectory も使えないという事実を知ってしまった。使うと例外を返します。