【发布时间】:2012-02-09 15:30:55
【问题描述】:
我有一个 ActiveX。
ActiveX 表示:
- Internet Explorer
- 本机二进制代码
- 从 dll (.ocx) 运行
- 处于保护模式
用户想要保存一些内容。我想显示一个另存为对话框,然后保存到他们说的位置。
由于托管我的 ActiveX 的进程以低完整性级别运行,因此代码无法保存到用户请求的位置。
由于托管我的 ActiveX 的进程在 Internet Explorer 的保护模式下运行,因此代码无法保存到用户请求的位置。
相反,文件被静默保存到用户未请求的位置。
相反,文件被静默保存到最终用户无法找到它们的位置。
对如何处理有什么建议吗?
奖金聊天
用户试图将什么保存到他们的硬盘上?这个问题没关系。但假装:
- 这是几百兆字节的 3D cad 网格
- 这是一个 GIS 图像转储
- 这是一个 PDF
- 这是一个 PNG
- 这是一个文本文件
补充阅读
Internet Explorer 的保护模式 api 允许插件显示保存对话框:
IEShowSaveFileDialog(this.Handle, "Eden.3ds",
GetUserDocumentsFolder(), null,
"3D Studio File|*.3ds|GIS Imagery|*.kvm|Adobe Acrobat File|*.pdf|All Files|*.*|"
null, 0,
OFN_ENABLESIZING | OFN_PATHMUSTEXIST,
ref destinationPath, ref stateCookie);
然后使用提供的 cookie 保存文件:
IESaveFile(stateCookie, sourcefilename);
sourcefilename 将是我设法保存在某处的文件(这是另一个问题)。
阅读奖励
Understanding and Working in Protected Mode Internet Explorer
Saving Files to the User Profile
某些扩展程序需要将文件保存到特定位置,以便用户或应用程序以后可以找到这些文件。以下步骤显示了如何将文件保存在低完整性位置之外:
在 %userprofile%\AppData\LocalLow 中创建文件的临时版本。文件保存成功后记得删除临时文件。
使用用户配置文件文件夹的位置调用
IEShowSaveFileDialog,以提示用户将文件保存在其他位置。如果用户接受 Save As 对话框,IEShowSaveFileDialog 将返回所选的目标文件夹。使用第 1 步中保存的临时文件的位置调用
IESaveFile。当您执行此操作时,保护模式的用户代理会将文件从临时位置复制到用户选择的位置。
【问题讨论】:
-
不确定您在问什么...如何规避安全措施?
-
@Yahia 我在问 Internet Explorer 的保护模式 API 在保护模式下是否可以用作应用程序编程接口。我在问如何给用户适当的安全警告,让他们做他们想做的事。
-
即使通过一些晦涩难懂的解决方法可以做到这一点,我也不会使用它...我会检查一下您想要的行为是否可以通过签名的 ActiveX 实现。
-
感谢您的更新...您所指的 API 用于“扩展”/“插件”,而不是用于通过网站加载的 ActiveX 对象...甚至需要一些解决方法获得对该 API 的访问权,这些变通办法随时可能被关闭(例如在补丁日)......我会尝试使用签名的 ActiveX 以及可能使用其他一些协议(如 ftp 或 WebDAV)......
标签: internet-explorer protected-mode