|
5■No95473 (Visual C#初心者 さん) に返信 > Visual C#でデスクトップアプリ(WPF)を作成し,イベントハンドラ操作時に > xmlファイルを保存させています.(Windows10 64bit) > > Visual Studioのデバックでは特に問題なくファイル保存できますが, > インストーラーからインストールしたものは以下のエラーメッセージ > 「アプリケーションのコンポーネントで、ハンドルされていない例外が発生しました〜」 > 「パス:******\settings_001_RTF.xmlへのアクセスが拒否されました」 > が出てきてしまい,上のパスを開いても保存されるべきファイルが保存できていません. > > 恐らくパス設定に原因があると考えています. > 以下はファイル保存コードです. > FileStream fs_RTF = new FileStream(Directory.GetCurrentDirectory() + "\\" + settings_RTF" + ".xml", FileMode.Create); > > Directory.GetCurrentDirectory()から, > 実行ファイルが置かれているフォルダに保存しているので > 別々にした方が良いとかありますでしょうか. > アドバイスいただけますと幸いです. > インストール先は、C:\Program Files (x86)\ もしくは、C:\Program Files\ のサブディレクトリではありませんか? もしそうであれば、管理者権限を持つアカウントでなおかつ昇格した状態じゃないと 書込みができません(書込み・削除のアクセス権を持ってオープンすることができない)。
ユーザーがフォルダを選択しないのであれば、Directory.GetcurrentDirectory() を利用するのではなく、
var basePath = Path.Combine( Environment.GetFolderPath( Environment.SpecialFolder.ApplicationData ), Application.Current.FriendlyName ); var fullPath = Path.Combine( basePath, settings_RTF ) + ".xml";
という感じで使うのがいいでしょう。
もしくは、app.config や user.config を使って管理するというやり方もあります。 fs_RTF に何を保存したいかによって変わってくるので、どういう形がいいかはわかりません。
|