C# 如何在特殊路径中保存文本文件

C# 如何在特殊路径中保存文本文件,c#,C#,我试图在特殊路径中创建并保存文本文件,但它不起作用 StreamWriter file = new StreamWriter(@"C:\\Users\\log.txt"); file.Write("Hi macho"); file.Close(); 如果我这样写它,它会保存在projectprojects\log\log\bin\Debug上 StreamWriter file = new StreamWriter("log.txt"); fil

我试图在特殊路径中创建并保存文本文件,但它不起作用

StreamWriter file = new StreamWriter(@"C:\\Users\\log.txt");
        file.Write("Hi macho");
        file.Close();
如果我这样写它,它会保存在projectprojects\log\log\bin\Debug上

StreamWriter file = new StreamWriter("log.txt");
        file.Write("Hi macho");
        file.Close();

因为错误消息显示您没有写入此文件夹的权限

如果我们考虑到windows,您通常不会写入C:\users,而是写入C:\users\yourUserName\Documents

如果您真的想写入受保护的文件夹,则需要管理权限,因此,一个选项是告诉系统您是以管理员身份登录的。这可以通过模拟实现:

using (new Impersonation(domain, username, password))
{
    // do the file access
}
虽然这会打开潘多拉魔盒tbh,但应该避免,因此我强烈建议您只将其写入为此目的而存在的文件夹中

此外,对于某些操作系统,上述方法可能不起作用(UAC用于go there)。然后,您要么以管理员身份运行应用程序,要么将管理权限regquest嵌入到应用程序清单中

在另一篇stackoverflow文章中对此进行了详细介绍:

编辑: 另外还有一点细节。如果您的程序位于program files文件夹中,并且您希望登录到与程序所在的文件夹相同的文件夹中,那么您仍将面临相同的问题。
例如,您的程序名位于c:\program files\myProgram中,如果没有特殊权限(通常称为管理员权限),则无法登录该程序。

您可以将文本文件保存在具有访问权限的特殊路径中。在这里,您可以通过streamwriter方法传递它

StreamWriter file = new StreamWriter(@"C:\log.txt");
        file.Write("Hi macho");
        file.Close();

显示了什么错误消息?我猜显示的是权限错误?@Thomas检查图片查看这是授权错误@Thomas。本应将pic添加到帖子中,但已经有一个挂起的编辑尝试以管理员身份运行该程序,看看它是否仍然不工作。为什么要保存到用户的根目录?普通权限不允许这样做。相反,请尝试,
@“c:\Users\Miss Piggy\somefolder”
-假设Piggy小姐当前已登录,错误消息为“访问路径c:\log.txt被拒绝”尝试{StreamWriter file=new StreamWriter(@“c:\log.txt”);file.Write(“Hi macho”);file.Close();}catch(异常er){MessageBox.Show(er.Message);}是否尝试将新文本文档添加到该位置(本地C)?这必须是访问权限。问题是c:\log正在写入c:\c:\、c:\program文件、c:\users(没有要写入的用户名和子文件夹)都是protected@Juranc:\本身受最新windows的保护。他必须创建一个子文件夹,如c:\logs,然后写入其中@anushkachathuranga,为了让您能够编写文本文件,您必须拥有对某个文件夹/子文件夹的访问权限,作为此处的注释(不是答案的一部分)。当我自己偶然发现无法写入我自己的程序文件夹的问题时,我真的发现windows的行为违反直觉(我知道没有管理员权限就无法写入c:\program文件,但在您自己的子文件夹中,我希望它能工作,但事实并非如此。您仍然需要管理员权限)。