[英]Installed C# application write permissions
我已經安裝了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");
}
}
每當我的應用程序關閉時,我都需要能夠重寫此內容。
每個C#程序都具有執行它的用戶的權限,而不是在應用程序級別上進行管理。 檢查執行該程序的用戶是否具有將文件保存到的位置(這似乎是該程序的工作目錄,通常是二進制文件所在的文件夾,但是可能有所不同)的寫訪問權限。
例如,如果將其安裝到C:\\Programme Files
並以普通用戶身份運行,則它可能對該目錄沒有寫權限(默認情況下,您需要管理員權限)。 考慮將文件移動到例如%APPDATA%
檢查訪問權限,並向訪問此文件的用戶授予寫權限。 默認情況下,當您安裝c#應用程序時,轉到C:\\ Program Files \\'您的應用程序' ,創建/覆蓋C:\\ Program Files下的文件不是一個好習慣。
我已經遇到了這個問題,並為我的應用提出了這個解決方案
將此文件放在該目錄中,並使用以下代碼獲取文件路徑
字符串filePath = System.IO.Path.Combine(System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile),“應用程序名稱”),“文件名”);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.