找不到文件可能由Outlook引起的XML文件抛出异常

时间:2010-09-21 10:19:01

标签: c# xml outlook filenotfoundexception

当我的应用程序被Outlook调用时,我收到了一个找不到文件的文件。当电子邮件保存到计算机上时会调用该应用程序,并对保存的邮件执行操作。

我的应用使用XML文件存储可配置的设置,但在Outlook调用以执行应用程序时找不到此文件。如果我手动运行该程序,那么它可以正常工作。

关于异常的有趣之处在于:

System.IO.FileNotFoundException:找不到文件'C:\ Program Files \ Common Files \ System \ MSMAPI \ 1033 \ settingsOpened.xml'。

为什么Outlook认为文件在这里?这不是文件的路径,但我确信它与Outlook有关。我在代码中引用路径的方式只是:

XmlDocument xDoc = new XmlDocument();
xDoc.Load("settingsOpened.xml");

文件与.exe位于同一文件夹中。我不想硬编码XML文件的完整路径。

非常感谢任何帮助。

谢谢, 罗斯

1 个答案:

答案 0 :(得分:0)

从显示的代码中我假设它将当前路径作为查找文件的位置。当前路径有点不可预测,因为某些操作会影响其值,并且值会在每次调用时保持不变。即当您的应用程序的另一部分,甚至是另一个应用程序,设置当前路径时,下一次使用该值。要设置当前路径,应该使用通用对话框来浏览特定文件。

在你的情况下,我会尝试

  • 通过从一个众所周知的文件夹(例如用户的应用程序路径 - 查找Environment.GetFolderPathEnvironment.SpecialFolder
  • 中明确指定路径

  • 解析相对于Dll的装配路径的路径。

要查找myType的汇编路径,您可以使用以下代码:

String strPath = System.IO.Path.GetDirectoryName(typeof(myType).Assembly.CodeBase);

在任何一种情况下,您都应该考虑在较新的Windows操作系统中,用户没有对系统驱动器的所有路径的写访问权。