如何使用我的winform应用程序从Outlook打开文件附件?

时间:2015-10-27 00:15:40

标签: c# winforms outlook attachment

我编写了一个winform应用程序并使用Inno Setup创建了一个安装程序,以便与之关联一个自定义文件扩展名。

设置应用程序,以便双击关联的文件类型,然后应用程序自动打开并加载文件。如果从桌面或文件资源管理器双击文件,这样可以正常工作。

但是,我们在尝试从Outlook内部打开文件附件时发现了一个问题。正在生成此错误:

System.UnauthorizedAccessException

我在应用程序中捕获了错误并检查了提供给程序的文件路径。它在文件系统中不存在(当我尝试浏览它时)。

C:\User\MyUserName\AppData\Local\Microsoft\Windows\INetCache\Content.Outlook\MXIIIP00\MyFilename.CustomExtension

...... \ Microsoft \ Windows \之后的部分不存在(据我所见)。

有没有其他人遇到过这个问题,知道如何解决它?

更新

如果我打开dos提示符 - 即使它未在Windows资源管理器中显示,我实际上也可以到达此位置。

更新2:

如果我将路径直接复制到Windows资源管理器中,我也可以在这里看到这些文件。但是,如果我从这里双击文件 - 我的应用程序仍然无法加载文件。

更新3:

Outlook保存的文件(我的应用程序正在尝试打开)似乎为空。这可以解释为什么我的应用程序无法处理它。当我发送Outlook时,Outlook似乎正在对文件执行某些操作。当我发送它时它开始时为72KB,但是当我收到它时它是252B。

2 个答案:

答案 0 :(得分:2)

这是AUTHORIZATION的问题。

您可以尝试在ADMIN MODE中运行您的应用和Outlook以获得成功 - 至少是强制性的,在同一授权级别运行。

甚至尝试在Windows TEMP文件夹中打开附件...但我猜你不会从Outlook中获取它,如果你没有,以编程方式提取该文件夹的附件并打开它。

答案 1 :(得分:2)

好的,事实证明这里有两个问题。

首先是我如何测试这个功能。为了模拟发送给客户的文件,我使用Outlook发送电子邮件,将我的文件作为附件发送给自己。对于某些(尚未知)的原因,Outlook会自行向我发送一个空文件。当我登录外部电子邮件客户端并将文件发送到Outlook时,文件保持不变。

但是,我的应用程序仍然无法打开它。

第二个问题是正在设置的只读属性创建的临时文件。一旦我设置我的应用程序关闭它,它一切正常。