C# 如何在windows窗体应用程序中保存文本文件

C# 如何在windows窗体应用程序中保存文本文件,c#,winforms,C#,Winforms,我正在创建一个windows窗体应用程序。出于安全原因,我想将许可证信息存储到文本文件中并对其进行加密 var serializer = new XmlSerializer(typeof(Licence)); var saveData = new Licence { ProductId = txtProductID.Text, ProductKey = txtProductKey.Text, CreatedDate = validate.CreationDate,

我正在创建一个windows窗体应用程序。出于安全原因,我想将许可证信息存储到文本文件中并对其进行加密

var serializer = new XmlSerializer(typeof(Licence));

var saveData = new Licence
{
    ProductId = txtProductID.Text,

    ProductKey = txtProductKey.Text,

    CreatedDate = validate.CreationDate,

    ExpireDate = validate.ExpireDate,

    DaysLeft = validate.DaysLeft
};

using (var writeFile = File.OpenWrite("data.txt"))
{
    serializer.Serialize(writeFile, saveData);
}
使用这段代码,我可以成功地创建文本文件。但是当我发布这个项目并安装它时,它给了我错误。 错误消息是

对路径“C:\Program Files(x86)\WebenixSystem\Metro Whole Sale\data.txt”的访问被拒绝

**************例外文本************** System.UnauthorizedAccessException:对路径“C:\Program Files(x86)\WebenixSystem\Metro Whole Sale\data.txt”的访问被拒绝


如何解决此问题,以及如何加密此txt文件?请帮助…

如错误所示-您没有权限访问您试图保存文件的路径。
由于文件将被加密,您不必隐藏它。因此,您可以将其保存在用户帐户的documents文件夹中

使用这行代码将返回“我的文档”文件夹的路径。您可以在其中创建新文件夹,或将文件直接保存到此路径

注意,这是一个相对路径,因此它适用于所有用户

String pathToDocuments = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

还要注意:许可证信息不会在不同用户之间共享。如果用户将使用不同的帐户登录,将找不到许可证数据,因为每个用户都有自己的“MyDocuments”、“AppData”等。

将其保存在用户目录中,或要求您的应用程序使用管理员权限运行stake a look a look a look a look a look@RBK使应用程序使用管理员权限运行很少是正确的解决方案。对于像保存文件这样简单的事情来说,这完全是一种过激行为,并且会带来安全问题。这个建议就像听到了21世纪初和所有Windows xp安全地狱的回声。