首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#:将.Net远程处理限制为仅接受本地主机连接

C#:将.Net远程处理限制为仅接受本地主机连接
EN

Stack Overflow用户
提问于 2009-10-07 22:06:18
回答 2查看 1.9K关注 0票数 3

我正在使用.Net远程处理来处理主服务和小客户端库的许多(有时是50+)实例之间的进程内通信。从安全的角度来看,服务必须只接受来自本地机器的连接,而不接受其他机器的连接--然而,我找不到任何关于如何做到这一点的信息,而且MSDN文档似乎也没有多大帮助。

最好是,我希望以一种不会触发用户防火墙警报的方式将连接绑定到本地主机……但这不是必需的功能。

谢谢你的帮助!

汤姆

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-16 16:30:46

最后,我在浏览IpcChannel文档时偶然发现了这一点。

IpcChannel的问题是,当客户端作为低完整性进程运行时,Windows命名管道在UAC下不能正常工作。不幸的是,由于我正在开发一个插件,而不是一个完整的应用程序,插件主机的低完整性意味着调用一堆Win32 app -包括一些专门针对Vista的新app -并以编程方式设置应用程序令牌ACL,这是我真的不想做的事情。

幸运的是,RegisterChannel()的几种重载形式允许您在System.Collections.IDictionary Hashtable对象中指定选项,其中几种与安全性和处理远程连接有关。更多信息请点击此处:

http://msdn.microsoft.com/en-us/library/bb187434%28VS.85%29.aspx

我最终将我的代码恢复到TcpChannel实现,并在服务器中更改了一些东西,它工作得非常好。不客气!

代码语言:javascript
复制
            System.Collections.IDictionary sProperties = new System.Collections.Hashtable();

        sProperties["port"] = SERVER_PORT;
        sProperties["authorizedGroup"] = "INTERACTIVE";
        sProperties["rejectRemoteRequests"] = true;

        BinaryServerFormatterSinkProvider serverProvider = new BinaryServerFormatterSinkProvider();

        TcpServerChannel channel = new TcpServerChannel(sProperties, serverProvider);   
        ChannelServices.RegisterChannel(channel, false);

很抱歉夺走了你的答案,但我偶然发现了一些能准确回答我问题的东西。

汤姆

票数 4
EN

Stack Overflow用户

发布于 2009-10-07 22:22:11

如果您使用的是.NET 2.0+,请使用IpcChannel。它是为进程间通信而设计的,根本不使用TCP。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1534506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档