簡體   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