質問: c# ローカルにあるhtmlの相対パスでの表示 c#webbrowserでローカルにあるhtmlを相対パスで表示させたいです。 exeファイルと同じフォルダにtest.htmlを置いたとして、 webbrowser1.navigate(@".\test.html")とすれば出来ると思ったんですが出来ません。 ご教授頂ければ助かります。
回答: >exeファイルと同じフォルダにtest.htmlを置いたとして、 >webbrowser1.navigate(@".\test.html")とすれば出来ると思ったんですが出来ません。 相対パスである以上、お約束ですが... カレントディレクトリはどこになっています? また、カレントディレクトリはプログラム実行中に変更される可能性もありますがその辺りは考慮されていますか? # windowsだとファイルダイアログでカレントディレクトリが変更される場合もありますし。 「exe起動時にexeファイルのある場所がカレントディレクトリ」という考え方は改めた方がいいです。 コマンドプロンプトでフルパス指定すればカレントディレクトリは違いますし、 ショートカット作成して作業ディレクトリを指定すればやはり違います。 上記のファイルダイアログで移る...というのを回避したとすると、 exe起動時に実行ファイルのある場所をカレントディレクトリに設定する。とかいう動作をしない限りは カレントディレクトリはあてにならない。 と考えておくべきです。 起動時に実行ファイルのパスを取得しておいて相対パスではなく絶対パスでアクセスする。のが安全です。 # ディレクトリトラバーサルはまた別の問題になりますが。