C# 安装应用程序wpf c后出现写入权限错误#
C# 安装应用程序wpf c后出现写入权限错误#,c#,wpf,installation,C#,Wpf,Installation,我目前的项目有一个问题。我正在开发一个wpf应用程序,其中有一个xml文件,需要在执行某些操作时进行更新。但是我在更新xml文件时遇到权限错误。这是我使用的代码。 public void createxml() { 尝试 { XmlWriterSettings=新的XmlWriterSettings(); settings.Indent=true; var outPutDirectory=System.IO.Path.GetDirectoryName(Assembly.getExecution
我目前的项目有一个问题。我正在开发一个wpf应用程序,其中有一个xml文件,需要在执行某些操作时进行更新。但是我在更新xml文件时遇到权限错误。这是我使用的代码。
public void createxml()
{
尝试
{
XmlWriterSettings=新的XmlWriterSettings();
settings.Indent=true;
var outPutDirectory=System.IO.Path.GetDirectoryName(Assembly.getExecutionGassembly().CodeBase);
var error=System.IO.Path.Combine(outPutDirectory,“foldername/filename.xml”);
string relsound=newURI(错误).LocalPath.Replace(@“\bin\Debug”,”);
writer=XmlWriter.Create(relsound,settings);
writer.WriteStartDocument();
WriteComment(“此文件由程序生成。”);
作者。书面声明(“类别”);
WriteAttributeString(“名称”、“QuickformsForm”);
填充子xml(o);
writer.writeedelement();
writer.WriteEndDocument();
writer.Flush();
writer.Close();
}
捕获(异常ae)
{
Show(ae.ToString());
}
}
///
///创建XML文件
///
///
公共空白填充子XML(Int16参数1)
{
尝试
{
数据集子集=新数据集();
db_op.Open();
subcat_SE=db_op.ExecuteDataSet(CommandType.Text,“选择查询”);
db_op.Close();
if(子目录表[0].Rows.Count>0)
{
对于(int k=0;k0)
{
对于(int j=0;j
当我通过右键单击该文件并转到“安全”选项卡来设置对此文件的完全访问权限时,我可以执行该操作。其他方面我不能。我试着用代码来设置它,但不幸的是,我的代码都不能正常工作。有人能帮我解决这个问题吗。我尝试了stackoverflow和其他网站的一些代码。
问候,
Sivajith选择一个应用程序具有写入权限的位置来编辑XML文件,例如LocalApplicationData。我正在应用程序中使用一个文件夹。那会导致错误吗?是的,我想是的。应用程序目录中的写入权限受到限制。如果您使用应用程序应该写入的目录之一,您应该不会有问题。但是我没有检查你的密码!可能还有其他错误。从使用应用程序数据目录开始,您将看到。。
public void createxml()
{
try
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
var outPutDirectory = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);
var error = System.IO.Path.Combine(outPutDirectory, "foldername/filename.xml");
string relsound = new Uri(error).LocalPath.Replace(@"\bin\Debug", "");
writer = XmlWriter.Create(relsound, settings);
writer.WriteStartDocument();
writer.WriteComment("This file is generated by the program.");
writer.WriteStartElement("Category");
writer.WriteAttributeString("Name", "QuickformsForm");
fill_subXML(o);
writer.WriteEndElement();
writer.WriteEndDocument();
writer.Flush();
writer.Close();
}
catch (Exception ae)
{
MessageBox.Show(ae.ToString());
}
}
/// <summary>
/// Create the XML file
/// </summary>
/// <param name="parm1"></param>
public void fill_subXML(Int16 param1)
{
try
{
DataSet subcat_SE = new DataSet();
db_op.Open();
subcat_SE = db_op.ExecuteDataSet(CommandType.Text, "SELECT query");
db_op.Close();
if (subcat_SE.Tables[0].Rows.Count > 0)
{
for (int k = 0; k < subcat_SE.Tables[0].Rows.Count; k++)
{
writer.WriteStartElement("Category");
writer.WriteAttributeString("ID", subcat_SE.Tables[0].Rows[k][0].ToString().Trim());
writer.WriteAttributeString("Name", subcat_SE.Tables[0].Rows[k][1].ToString().Trim());
writer.WriteAttributeString("Flag", "C");
DataSet dt_formmaster_SE = new DataSet();
db_op.Open();
dt_f1_SE = db_op.ExecuteDataSet(CommandType.Text, "select query");
db_op.Close();
if (dt_f1_SE .Tables[0].Rows.Count > 0)
{
for (int j = 0; j < dt_f1_SE .Tables[0].Rows.Count; j++)
{
writer.WriteStartElement("Form");
writer.WriteAttributeString("ID", dt_f1_SE .Tables[0].Rows[j][0].ToString().Trim());
writer.WriteAttributeString("Name", dt_f1_SE .Tables[0].Rows[j][1].ToString().Trim());
writer.WriteAttributeString("Flag", "F");
writer.WriteEndElement();
}
}
fill_subXML(Convert.ToInt16(subcat_SE.Tables[0].Rows[k][0].ToString().Trim()));
writer.WriteEndElement();
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}