如何让程序找到自己保存和读取文件的位置?

时间:2013-05-20 14:49:08

标签: c# error-handling permissions

我正在尝试编写一个xml文件并将其附加到电子邮件中。如果我给它个人文档文件夹的路径(即C:\users\myname\Documents\Test.xml),它的效果很好,但如果我尝试将其更改为C:\\Test.xml,我会收到以下错误消息:

  

UnauthorizedAccessException是未处理的路径访问   “C:\ Test.xml”被拒绝。

(我不能发布照片)

对此有什么好的解决方法?

3 个答案:

答案 0 :(得分:1)

要获取启动应用程序的目录,您可以使用AppDomain.CurrentDomain.BaseDirectory

关于管理员权限:

  1. 检查用户是否使用Run as Administrator启动了应用程序。 在这种情况下,用户应具有管理权限来编写..这是示例代码..

        var identity = WindowsIdentity.GetCurrent();
        var principal = new WindowsPrincipal(identity);
        if (principal.IsInRole(WindowsBuiltInRole.Administrator))
        {
            //Application is Running as ADMIN
        }
    
  2. 您可以随时将其写入TEMPLOCAL APP DATA文件夹..

        var temp = Path.GetTempPath();
    
        //e.g: C:\Users\UserName\AppData\Local\Temp\test.xml
        var testFilePath = Path.Combine(temp, "test.xml");
    

答案 1 :(得分:0)

System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly()。CodeBase)

请参阅How can I get the application's path in a .NET console application?

答案 2 :(得分:0)

并不总是允许编写程序文件夹,而是使用%TEMP%文件夹。