我正在编写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扩展,因此欢迎提供建议。
谢谢!
答案 0 :(得分:0)
在这里回答我自己的问题。
看起来问题与IE和可执行文件的完整性级别有关。 根据{{3}},这些级别是:
IE在低于可执行文件的完整性级别上运行,因此禁止与之通信。 this resource列出了替代的沟通方式。
快速解决方案是降低可执行文件的默认完整性级别(对我有用,但对可执行文件设置了限制(例如访问文件系统等)):
icacls lowIODummy.exe /setintegritylevel Low