- - PR -
XmlDocument.Load で ルートディレクトリにあるXMLを参照できない。
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-12-05 12:19
.NET2003 C# でコンソールアプリケーションを開発しています。
string path = @".\\test.xml"; XmlDocument xml = new XmlDocument(); xml.Load(path); 上記処理で、 exeと同じディレクトリにある、test.xmlを参照したいのですが、 ファイル "C:\\WINDOWS\\system32\\test.xml" が見つかりませんでした。 が発生してしまいます。 開発環境では正しく動作したのですが、 本番環境でエラーになってしまいました。 対処方法のご教授よろしくお願いします。 | ||||
|
投稿日時: 2008-12-05 12:33
Application.StartupPath や AppDomain.BaseDirectory を使って exe が置かれているディレクトリの絶対パスを取得し、それを元にファイルパスを作成すればいいと思います。
_________________ Nakamura Blog | ||||
|
投稿日時: 2008-12-05 13:01
なかむら様
回答ありがとうございました。 絶対パス指定で対応できました。 しかし、何故、ルートディレクトリが参照出来ないのでしょうか・・・。 | ||||
|
投稿日時: 2008-12-05 13:20
相対パスで見たら system32 を見ている事が答だと思いますが・・・。
| ||||
|
投稿日時: 2008-12-05 13:56
「ルートディレクトリ」じゃなくて「カレントディレクトリ」でしょ? 常に「カレントディレクトリ=実行ファイルの置いてある場所」である保証は全くありません。 おそらく、Windows サービスから起動する、あるいは Windows サービスとして起動する、といったことをしてるんだと思いますが、そうった場合、プロセスのカレントディレクトリは Windows のシステムディレクトリに設定されることがあります。 |
1