簡體   English   中英

已安裝的C#應用​​程序寫入權限

[英]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下的文件不是一個好習慣。

我已經遇到了這個問題,並為我的應用提出了這個解決方案

  1. 在用戶配置文件下創建一個帶有應用程序名稱的目錄(對於Windows 7為C:\\ Users \\'Application Name' )。 用戶將擁有其用戶資料的完全訪問權限
  2. 將此文件放在該目錄中,並使用以下代碼獲取文件路徑

    字符串filePath = System.IO.Path.Combine(System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile),“應用程序名稱”),“文件名”);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM