C# OpenWrite UnauthorizedAccessException

C# OpenWrite UnauthorizedAccessException,c#,unauthorizedaccessexcepti,C#,Unauthorizedaccessexcepti,我正在开发一个桌面应用程序,它在内部创建了一个StringBuilder,错误会被附加到该程序中,并最终写入一个txt文件 我得到一个异常,说“访问路径”C:\Users\Me\Documents\test\u dir\5\u十万行\u Logs.txt“被拒绝” 下面是执行.txt文件创建的代码。异常出现在File.OpenWrite(tempfile))行中 string tempfile=“C:\\Users\\Me\\Documents\\test\u dir\\5\u十万行\u Log

我正在开发一个桌面应用程序,它在内部创建了一个
StringBuilder
,错误会被附加到该程序中,并最终写入一个txt文件

我得到一个异常,说“访问路径”C:\Users\Me\Documents\test\u dir\5\u十万行\u Logs.txt“被拒绝”

下面是执行.txt文件创建的代码。异常出现在
File.OpenWrite(tempfile))
行中

string tempfile=“C:\\Users\\Me\\Documents\\test\u dir\\5\u十万行\u Logs.txt”;
使用(Stream fileStream=File.OpenWrite(tempfile))//此处出现异常
{
字符串数据=logFileContent.ToString();
Byte[]filecontent=新的UTF8Encoding(true).GetBytes(数据);
Write(filecontent,0,filecontent.Length);
}
Process.Start(tempfile);
我仔细检查了tempfile,它确实有文件扩展名,并且没有试图创建目录

我尝试使用语句包装
,尝试“授予”访问权限,但没有成功:

var permissionSet=新的permissionSet(PermissionState.None);
var writePermission=new FileIOPermission(FileIOPermissionAccess.AllAccess,Path.GetDirectoryName(tempfile));
writePermission.Demand();
permissionSet.AddPermission(writePermission);
FileAttributes=File.GetAttributes(Path.GetDirectoryName(tempfile));
if(permissionSet.IsSubsetOf(AppDomain.CurrentDomain.permissionSet))
{
//使用语句
}
我希望这个桌面应用程序能够交给任何人,他们能够使用这个,而不需要用户处理文件夹权限或其他事情。当然,我真的只希望它尝试访问我的下载、我的文档、闪存驱动器或其他类似设备上的目录

我将非常感谢提供的任何帮助

编辑:

看来这可能是Windows的问题。该文件在其属性中设置为只读(最初不是这样),尝试将该文件设置为非只读不起作用,因为Windows显然只是将其重置回只读。但是,如果文件不在文件夹中,而只是放在裸驱动器上(例如:D:/5\u十万\u千行\u Logs.txt),它似乎工作正常。如果有一种编程的方法来解决这个问题,我会很感激,但是如果这是Windows问题,这可能需要将它变成一个不同的问题。

根据示例,当您没有权限或文件为只读时,会引发异常

若要测试您是否没有权限,请尝试以管理员身份运行应用程序。要验证第二种情况,请在资源管理器中右键单击该文件,选择“属性”,并确保它不是只读的


除了字符串
tempfile=“C:\\Users\\Me\\Documents\\test\u dir\\5\u十万行\u Logs.txt”
是一个奇怪的路径,因为它使用的是用户
me
,而这肯定不是每台机器上都存在的。如果要获取当前用户的文档文件夹,可以使用:
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)这将为您创建正确的路径。

您是如何运行的?你是“我”用户吗?@Crowcoder我已登录到该帐户,是的,正在尝试运行此帐户。我甚至试图通过VS2019调试它,我一直运行到这个窗口,Windows不会随意更改文件上的只读标志。还有其他的操作。@i单击我机器上文件夹中的任何内容,例如Documents\TestProject*.txt已选中readonly属性。取消选中,单击应用/确定,然后立即打开该文件上的属性备份,表明已重新检查只读属性。如果这不是Windows问题,可能是什么问题?不要只是在没有任何建议或可能的解释的情况下发表评论。这是无益的。“如果这不是Windows问题,那可能是什么?”你为什么不试着检查一下你的机器上运行的可能是什么?我希望我的评论会提示您这样做,但显然您对自己的故障排除不感兴趣,您只希望将解决方案放在一个盘子上交给您。路径是“编辑”的,因此实际用户帐户是“隐藏”的,这是为了测试目的。实际路径是使用另一种方法获得的,该方法可以准确地获得路径+文件名,但这可能是Windows的问题。该文件被设置为只读,尝试将该文件设置为非只读无法工作,因为Windows显然会将其重置为只读。