BHO 和服务之间的 C# IPC

Posted

技术标签:

【中文标题】BHO 和服务之间的 C# IPC【英文标题】:C# IPC Between BHO and Service 【发布时间】:2010-09-04 19:37:19 【问题描述】:

我似乎无法在我的 IE C# BHO 和以 SYSTEM 运行的 C# 控制台应用程序之间进行通信。

到目前为止,我已经尝试过使用 Remoting 和 EventWaitHandle,但是当我在 Win 7 中打开 UAC 的默认设置时,两者都会给我“拒绝访问”错误。

我已经能够拥有一个控制台应用程序,它使用 Remoting 和 EventWaitHandle 与服务进行通信。

我需要一种在启用 UAC 的情况下在两个进程之间共享数据的方法,我有哪些选择?

【问题讨论】:

它是特权提升的后门。 UAC 旨在关闭的门。 我认为 UAC 不会阻止您让 C# 控制台应用程序侦听端口(仅接受本地连接)并让 BHO 通过 TCP/UDP 连接到它 我对托管 BHO 几乎一无所知,但是,您可以使用 netNamedPipesBinding 在控制台应用程序中托管 WCF 服务。这是一个非常安全的绑定,并且只能在同一台计算机中使用。也许您可以将服务引用添加到您的 BHO 项目,指向控制台服务? 【参考方案1】:

首先查看Understanding and Working in Protected Mode Internet Explorer。有一段大约在中途,其中指出:

注意如果您使用保护模式进行通信,最佳做法是以低完整性运行您的应用程序。否则,仅使用安全形式的进程间通信 (IPC),例如远程过程调用 (RPC),在保护模式和更高完整性进程之间进行通信。

基本上,在 IE“保护模式”进程中运行的任何东西都是非常受限的“沙盒”。虽然 this codeproject article 以 C++/COM 为目标,但您应该能够将它解释的原则应用到在托管代码中编写某些内容,尽管您可能必须 P/Invoke 才能实现这一点。

【讨论】:

以上是关于BHO 和服务之间的 C# IPC的主要内容,如果未能解决你的问题,请参考以下文章

系统帐户和当前用户之间的 IPC [关闭]

c++ XPCOM组件与COM服务之间的通信(IPC)

制作一个属于自己的BHO吧!(C#)

使用 IPC 在 Python 和 C# 之间进行通信的最简单方法?

C++ DLL(本地挂钩)和 C# 应用程序之间的合适 IPC

Nginx 和后端服务器之间的 IPC 机制是啥?