DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ProgramFiles配下へのファイル保存でエラー

環境/言語:[win7 c# 2008 Framework3.5]
分類:[.NET]

インストーラーを使ってプログラムをc:/Program FIles/ 配下にインストールしました。
するとプログラム起動時にファイルを書き込みをする部分でエラーが発生します。

管理者権限でプログラムを実行するとエラーは発生しません。
権限の問題だと思うのですが、プログラム的に対応することは可能でしょうか。

プログラムで権限を超えての保存が難しい場合、
このような書き込みが必要なファイルはどこに保存するのが一般的でしょうか。

よろしくお願いします。



************** 例外テキスト **************
System.UnauthorizedAccessException: パス 'C:\Program Files\hogehoge\setting.xml' へのアクセスが拒否されました。
場所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
場所 System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
場所 System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
場所 System.Xml.XmlWriter.Create(String outputFileName, XmlWriterSettings settings)
場所 System.Xml.Linq.XDocument.Save(String fileName, SaveOptions options)
場所 System.Xml.Linq.XDocument.Save(String fileName)
■No28268に返信(muuuuuuさんの記事)
> インストーラーを使ってプログラムをc:/Program FIles/ 配下にインストールしました。
> するとプログラム起動時にファイルを書き込みをする部分でエラーが発生します。

Windows Vista & 7のUAC対策について
http://www.trycut.com/uac.htm
Windowsのユーザー・アカウント制御(UAC)を一時的に無効にする
http://www.atmarkit.co.jp/fwin2k/win2ktips/859disuac/disuac.html

UACについての認識は上記以外でもいろいろ調べることができるのでで確認してください。

> 管理者権限でプログラムを実行するとエラーは発生しません。
> 権限の問題だと思うのですが、プログラム的に対応することは可能でしょうか。

プログラムをインストールするフォルダについてですが、必ずしもc:/Program FIles/にインストールしなければならないという規則はありませんし
c:/windows/等のフォルダにも制限がかかるのとあわせて、レジストリ操作でも
必ず管理者権限での実行が必要になります。

その辺りもあわせて一度考えられたほうがいいかと思います。

ちなみに、自社開発ソフト等なのであれば、プロジェクト名等をフォルダ名にし(c:/プロジェクト名/)
そこへインストールという形でもいいのでは?
しるふぃんさん、ありがとうございます。

配布用のプログラムなのです。
毎回、管理者権限で起動するのは大変ですので、

Properties.Settings.Default.xxxxxx

に保存するようにいたしました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板