当Outlook调用我的应用程序时,我发现找不到文件。当将电子邮件保存到计算机时,该应用程序被调用并对保存消息执行操作。

我的应用程序使用XML文件存储可配置的设置,但是当Outlook调用执行应用程序时找不到此文件。如果我手动运行程序,则可以正常运行。

例外的有趣之处在于:

system.io.io.filenotfoundException:找不到文件'c: program files common system msmapi 1033 settingsopened.xml'。

为什么Outlook认为文件在这里?这不是文件的路径,但我敢肯定与Outlook有关。我在代码中引用路径的方式仅为:

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

文件与.exe在同一文件夹中。我也不想为XML文件的完整路径进行硬编码。

任何帮助将不胜感激。

谢谢,罗斯

有帮助吗?

解决方案

从显示的代码中,我假设它将当前路径作为查找文件的位置。当前的路径有点不可预测,因为某些操作会影响其值,并且该值在每个呼叫上持续存在。即,当您的应用程序的另一部分甚至其他应用程序设置当前路径时,下次使用此值。要设置当前路径,使用通用对话框浏览某个文件就足够了。

在您的情况下,我会尝试

  • 通过从一个知名的文件夹之一(例如用户的应用路径 - 查找)来明确指定路径 Environment.GetFolderPathEnvironment.SpecialFolder)

或者

  • 解决相对于DLL的组装路径的路径。

找到组装路径 myType 您可以使用以下代码:

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

无论哪种情况,您都应考虑在较新的Windows操作系统中,用户没有对系统驱动器的所有路径的写入访问权限。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top