如何在IE浏览器插件中记录实时流

时间:2015-10-30 11:21:22

标签: internet-explorer activex uac protected-mode

我正在为Win7 / Win10 / Vista编写一个IE插件(32位ActiveX dll)来记录来自一个或多个远程IP摄像机的数据。

由于

,录制到某些目标目录(主要是在NTFS分区和/或USB设备上)不成功
fopen_s(&fp, filename, "wb") == EACCES
GetLastError()==ERROR_FILE_NOT_FOUND or ERROR_ACCESS_DENIED.

实际上目标目录下没有这样的文件。 在IE(11)中禁用“保护模式”,不会出现这样的问题。

我读过这篇文章

  

Techniques to save files from ActiveX (protected mode IE)

和本文

  

用户帐户控制兼容性的Windows Vista应用程序开发要求   https://msdn.microsoft.com/en-us/library/bb530410.aspx

但是我仍然有以下要求:

  1. 该插件可以保存实时流。首先保存到临时目录,然后复制到目标directoy不是用户友好的。
  2. 该插件通过按网页按钮保存快照,并且不希望每次都提示恼人的“SaveAs”对话框;
  3. 由于IP摄像机是DHCP编辑的,我不能简单地将其IP添加到“本地Intranet区域”以避免“保护模式”。
  4. 由于插件具有安装程序,因此授予管理员权限。任何修改都可以在安装过程中完成。

    有什么方法可以解决这个问题吗?或者由于安全问题,要求无效?

1 个答案:

答案 0 :(得分:0)

这里只有两个选择:

1)您可以写入您的控件有权访问的位置,例如AppData / LocalLow

2)您可以启动另一个已经获得Elevation Policy的.exe文件,该文件允许它以中等完整性模式从低完整性进程启动并让它进行保存。它仍然仅限于用户帐户可以写的地方。

第一个是迄今为止最简单的,但正如你所说,它有时导致一个不太理想的保存位置。第二个是更多工作,需要跨进程通信并确保正确清理流程,但它确实允许您注册。

来自microsoft website

为了说明,以下策略会将名为contoso.exe的虚构代理静默提升到中等完整性级别。

HKEY_LOCAL_MACHINE
SOFTWARE
Microsoft
Internet Explorer
Low Rights
ElevationPolicy
{0002df01-0000-0000-c000-000000000046}
AppName="Contoso.exe"
AppPath="C:\%USERPROFILE%\Application Data\Contoso"
Policy=(DWORD) 00000003

注意出于安全原因,受保护模式下的Internet Explorer会忽略更改createProcess,createProcessAsUser和相关功能的工作目录的参数。如果您的进程必须接受工作目录参数,请使用逻辑XOR操作将0x80000添加到应用程序的提升策略的Policy设置的值。请注意,这可能会产生安全风险;因此,强烈建议不要这样做。

如果Microsoft确定某个应用程序存在漏洞并对最终用户造成危险,则Microsoft保留随时从提升策略中删除该应用程序的权利。

您还可以创建代理进程以访问高完整性对象。有关如何启动具有高完整性级别的代理进程的信息,请参阅“开发人员最佳实践和最低特权环境中的应用程序指南”中的“管理用户应用程序指南”部分。请注意,您无需创建提升策略,因为UAC将处理提升。

如果现有扩展使用rundll32.exe来托管DLL库,则可以通过将库的文件名添加到以下密钥来静默启动rundll32.exe进程,其完整性较低。