繁体   English   中英

当IE处于非管理员模式时,无法通过stdin / stdout与从BHO启动的可执行文件进行通信

[英]Unable to communicate with an executable started from BHO via stdin / stdout when IE is in non admin mode

我正在编写IE 11扩展(BHO),它应该能够启动可执行文件,并通过标准的开/关流与可执行文件进行通信,并将结果相应地传播到页面。

在管理模式下运行IE时,一切都是桃子。 当以常规用户模式启动IE时,BHO仍然能够调用可执行文件,但与之的通信中断:往/自可执行文件的流不会被重定向(可执行文件的输出开始出现在其自己的控制台中,并且不再到达BHO)。

我这样开始我的过程:

nativeAppProcess = new Process();
nativeAppProcess.StartInfo.FileName = NATIVE_APP_PATH;
nativeAppProcess.StartInfo.UseShellExecute = false;
nativeAppProcess.StartInfo.RedirectStandardOutput = true;
nativeAppProcess.StartInfo.RedirectStandardInput = true;
nativeAppProcess.Start();

我对本机应用程序和IE扩展拥有完全控制权,因此欢迎您提供建议。

谢谢!

在这里回答我自己的问题。

看起来问题与IE和可执行文件的完整性级别有关。 根据此资源 ,这些级别是:

  • 系统:由OS组件使用,不应由应用程序使用。
  • 高:具有完全管理员权限的运行中进程。
  • 中:以常规方式启动的流程。
  • 低:由IE和Windows Mail用于提供保护模式

IE在比可执行文件更低的完整性级别上运行,因此被禁止与其通信。 此页面列出了其他通信方式。

一个快速的解决方案是降低可执行文件的默认完整性级别(对我有用,但对可执行文件(例如对文件系统的访问等)施加了限制):

icacls lowIODummy.exe /setintegritylevel Low

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM