2015-10-27 102 views
0

我写了一个winform应用程序,并使用Inno Setup创建了一个安装程序,以便自定义文件扩展名与它关联。如何使用我的winform应用程序从Outlook打开文件附件?

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

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

System.UnauthorizedAccessException 

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

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

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

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

UPDATE:

如果我打开一个DOS提示符下 - 其实我可以得到,即使它不是在Windows资源管理器显示此位置。

更新2:

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

更新3:

通过Outlook已保存的文件(和我的应用程序试图打开),显示为空。这将解释为什么我的应用程序无法处理它。当我发送Outlook时,Outlook似乎正在对文件做些什么。当我发送时它开始为72KB,但是当我收到它时 - 它是252B。

回答

2

这是一个授权问题。

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

甚至尝试在Windows TEMP文件夹中打开您的附件...但是如果您不以编程方式将附件解压缩到该文件夹​​并将其打开,我想你不会从Outlook中获取它。

+0

感谢队友,你的第二个建议让我回答。 –

2

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

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

但是,我的应用程序仍然不会打开它。

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

+1

这帮了我很多。蚂蚁之后,这篇文章帮助了我最后一点:https://stackoverflow.com/a/7399663/5110381 – Bjqn

相关问题