1

私は言うエラーがあります:

「パス 'C:\Program Files (x86)\My Program\bin\Debug\myName.data' へのアクセスが拒否されました」

これは私のコードです

TextWriter tw = new StreamWriter("bin\\Debug\\myName.data");

tw.Write(txtLoginName.Text);
tw.Close();

すべてのプロジェクト ファイルに対して完全な制御権限を与えています。クライアントが自分のPCにインストールするようにインストーラーを作成したのですが、ファイルを確認したところ、ユーザーに書き込み権限が与えられていませんでした。これをどのように処理しますか?

************** Exception Text **************
System.UnauthorizedAccessException: Access to the path 'C:\Program Files (x86)\My Program\bin\Debug\myName.data' is denied.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at 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)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
   at System.IO.StreamWriter.CreateFile(String path, Boolean append)
   at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize)
   at System.IO.StreamWriter..ctor(String path)
   at clientChat.Form2.button1_Click(Object sender, EventArgs e)
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
4

2 に答える 2

1

インストーラーはユーザーのログイン コンテキストで実行され、システムの通常のユーザーには Program Files やその他のシステム フォルダーへの書き込み権限がありません。

フォルダーの場所をユーザーのアプリ データ フォルダーに移動する必要があります。または、インストーラーによって作成された他の一般的な場所。

于 2012-11-25T06:01:41.283 に答える
0

プログラム ファイル (およびシステム フォルダー内のその他の場所) は、通常のユーザーは書き込みできません (設計上)。

ドキュメント フォルダまたはその他のユーザーごとの場所を使用して、ユーザーのデータを保存してください。Environment.GetFolderPathを使用すると、現在のユーザーの正しい場所を取得し、どの Environment.SpecialFolder がケースに適しているかを検討し、それベース フォルダーとして使用できます。

次のサンプルは、「my documents」フォルダー内のパスを示します。

var pathToFile = Path.Combine(
  Environment.GetFolderPath(Environment.SpecialFolder.Personal),
  "my_file_name.txt");
于 2012-11-25T05:59:34.757 に答える