読者です 読者をやめる 読者になる 読者になる

かわろぐ

技術、ボルダリング、セキュリティ、その他もろもろ

MENU

Windows CE は相対パスが使えないのでexeのある場所のパスを取得する方法

Imagine Cup へ出場するためにWindows CE 上で動作するプログラムを書いているのですが、そのなかで自分が詰まって調べて調べて解決したことをまとめておきます。

環境

  • Windows Compact 7
  • .NET Compact Framework 3.5
  • C#


Windows CE系のOSは普通のWindowsと違って、相対パスが使えず、すべてを絶対パスで指定する必要があります。
で、exeのあるフォルダまでの絶対パスを取得する方法は次のコードで実現できました。

//.exe の絶対パスを取得する
String path = this.GetType().Assembly.GetModules()[0].FullyQualifiedName;

//最後から\を探してその位置を特定する
int en = path.LastIndexOf(@"\");

//文字列の最初から上記で取得した位置までの文字列を取得する
path = path.Substring(0, en);