我有一个已安装的C#应用程序,但该程序需要能够读写xml。我测试了已安装的程序,如果它存在,它可以读取xml但是程序关闭时会出现异常。
有人可以帮助我。
我创建xml的当前方式是这样的:
private void SaveQuickLinks(List<QuickLinksData> QuickLinks)
{
XmlDocument doc = new XmlDocument();
doc.Load("QuickLinks.xml");
doc.RemoveAll();
XmlElement Root = doc.CreateElement("", "QuickLinksList", "");
doc.AppendChild(Root);
foreach (QuickLinksData QuickLink in QuickLinks)
{
//Create New QuickLink
XmlElement LinkElement = doc.CreateElement("", "QuickLink", "");
Root.AppendChild(LinkElement);
//Create Element With QuickLink Name
XmlElement QuickLinkName = doc.CreateElement("", "LinkName", "");
XmlText LinkName = doc.CreateTextNode(QuickLink.Link_Name);
QuickLinkName.AppendChild(LinkName);
LinkElement.AppendChild(QuickLinkName);
//Create Element with QuickLink Link
XmlElement QuickLinkURL = doc.CreateElement("", "LinkURL", "");
XmlText LinkURL = doc.CreateTextNode(QuickLink.Link_URL);
QuickLinkURL.AppendChild(LinkURL);
LinkElement.AppendChild(QuickLinkURL);
}
//File.SetAttributes("QuickLinks.xml", FileAttributes.Normal);
//doc.Save("QuickLinks.xml");
using (var file = new FileStream("QuickLinks.xml", FileMode.OpenOrCreate, FileAccess.Write, FileShare.None))
{
doc.Save("QuickLinks.xml");
}
}
每次我的应用程序关闭时,我都需要能够覆盖它。
答案 0 :(得分:0)
每个C#程序都具有正在执行它的用户的权限,不在应用程序级别进行管理。检查执行程序的用户是否具有对保存文件的位置的写访问权(这似乎是程序的工作目录 - 通常是二进制文件所在的文件夹,但可能不同)。
E.g。如果您将其安装到C:\Programme Files
,并以普通用户身份运行,那么它可能没有对此目录的写入权限(默认情况下您需要管理员权限)。考虑将文件移动到例如%APPDATA%
答案 1 :(得分:0)
检查访问权限并向访问此文件的用户授予写入权限。 默认情况下安装c#应用程序时会转到 C:\ Program Files \'您的应用程序',创建/覆盖C:\ Program Files下的文件不是一个好习惯。
我遇到过这个问题,并为我的应用程序提出了这个解决方案
将此文件放在该目录中,并使用以下代码获取文件路径
string filePath = System.IO.Path.Combine(System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile),“Application Name”),“File Name”);
< / LI> 醇>