我一直在将一个小的XML数据文件保存到外部驱动器,没有问题。但是后来我尝试使用ApplicationData文件夹和其他文件夹,甚至使用C:\,但没有运气。我收到类似“访问路径“C:\”被拒绝”之类的错误。

只是为了确认,该文件已创建并使用当前代码正确读取到外部驱动器。我想这与安全性和权限有关,但是我发现没有什么用处太大。

在此先感谢您能为我指出正确的方向!

        string fipData = @"F:\IL2\SIIYM\SIIYM Data.xml";  //  external drive ok :-)
        //string fipData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
        //string fipData = @"C:\";

        //  if the XML data file doesn't exist, create it
        bool dataFileExists = File.Exists(fipData);
        if (dataFileExists)
        {
            //  read the XML values
            XDocument xData = XDocument.Load(fipData);
            //...
        }
        else
        {
            //  create & save the XML data file
            XElement xLastPath = new XElement(el_lastPath, "");
            XElement xLastCode = new XElement(el_lastCode, "");

            XElement xRoot = new XElement(el_root);
            xRoot.Add(xLastPath);
            xRoot.Add(xLastCode);

            XDocument newDataFile = new XDocument();
            newDataFile.Add(xRoot);

            try
            {
                newDataFile.Save(fipData);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Data file unable to be created. System message:{0}".Put(Environment.NewLine + Environment.NewLine + ex.Message));
            }
        }

最佳答案

在对另一个答案的评论中,您说这是一个桌面应用程序,因此让我们分别对待每个位置。

在Vista及更高版本中,普通用户无权在系统驱动器的根目录(通常为C :)中创建文件。您可以通过在资源管理器中打开C:\,右键单击并尝试创建文件来自己查看-您应该得到一个UAC提示。因此,如果您要写入C:\,则您的应用程序需要通过管理员来运行,需要通过合适的 list 来要求提升权限,或者在要写入该位置时通过启动单独的进程来运行。

但是,应用程序数据Environment.SpecialFolder.ApplicationData应该可以工作。如果输出的实际目录返回的内容是什么?

关于c# - "Access to the path ... is denied"(.NET C#),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1450951/

10-11 03:24