C# 在C中使用TextWriter写入文件时发生UnauthorizedAccessException#

C# 在C中使用TextWriter写入文件时发生UnauthorizedAccessException#,c#,.net,C#,.net,我有一个错误说: “对路径“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中,当检查文件时,我发现没有授予用户写访问

我有一个错误说:

“对路径“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)
程序文件(以及系统文件夹中的其他位置)不可由普通用户写入(按设计)

请使用文档文件夹或其他按用户位置存储用户数据。它可以为当前用户获取正确的位置,考虑您的案例中的哪些工作,并将其用作基本文件夹。

下面的示例将给出“我的文档”文件夹中的路径:


安装程序将在用户的登录上下文中运行,系统的普通用户没有写入程序文件或其他此类系统文件夹的权限


您需要将文件夹的位置移动到用户的应用程序数据文件夹中。或安装程序创建的其他常见位置。

这是新文件还是现有文件?您能确认是否设置了只读标志吗?另外,初始化textwriter时是否会出现此错误?或者,当您执行写操作时?在visual studio中编译时,没有问题,因为所有预授权都提供给用户,但当生成安装程序时,客户端会收到此错误,因为该文件没有写预授权,即它的现有文件。这个文件被赋予了完全的控制权,读,写。我从堆栈跟踪本身得到了我的问题的答案。安装程序通常在用户的上下文中运行,而普通用户通常无权修改程序文件下的内容。您可能需要考虑在提升的特权中运行代码,或者将数据文件的位置映射到用户的AppData \本地文件夹。
var pathToFile = Path.Combine(
  Environment.GetFolderPath(Environment.SpecialFolder.Personal),
  "my_file_name.txt");