【C#】ショートカットから起動するとDirectoryクラスのカレントディレクトリが違う問題
概要
アプリは実行すると基本的にexeのある場所をカレントディレクトリとし実行されますが、ショートカットから実行した場合その限りではありません。 相対パスで実行するショートカットに
%windir%\explorer.exe "
を使用していると
Directory.GetCurrentDirectory()
System.Environment.CurrentDirectory
でパスを取得すると、上記のパスになってしまいます。 これではDirectoryクラスを相対パスで使用することが出来ません。 ですのでカレントディレクトリの移動を行う必要があります。
対策
System.AppDomain.CurrentDomain.BaseDirectory
でパスを取得すると、実行ファイルのパスが取得できるみたいです。 ですのでこのパスを使用してDirectoryクラスのカレントディレクトリを移動します。
string dir = System.AppDomain.CurrentDomain.BaseDirectory;
Directory.SetCurrentDirectory(dir);
これでDirectoryクラスで相対パスが普段と同じように使用することが出来ました。