在非管理员帐户上获取多个PGM侦听套接字的访问异常

本文关键字:PGM 套接字 异常 访问 管理员 获取 | 更新日期: 2024-09-08 07:16:41

以下代码适用于管理员帐户,但对于非管理员帐户,它打印成功两次,然后抛出System.Net.Sockets.SocketException(0x80004005):试图以其访问权限所禁止的方式访问套接字。有人知道为什么会这样吗?

仅供参考,这里的实际用例是使用相同PGM地址和套接字的多个应用程序。推送(通过多播)实时更新。这证明了这不是由我们自己的图书馆引起的。

class Program {
    static void Main(string[] args) {
        IPAddress ipAddr = IPAddress.Parse("239.0.0.2");
        IPEndPoint end = new IPEndPoint(ipAddr, 40002);
        Socket[] _sockets = new[] {
            new Socket(AddressFamily.InterNetwork, SocketType.Rdm, (ProtocolType)113 ),
            new Socket(AddressFamily.InterNetwork, SocketType.Rdm, (ProtocolType)113 ),
            new Socket(AddressFamily.InterNetwork, SocketType.Rdm, (ProtocolType)113 )
        };
        foreach (var socket in _sockets)
        {
            socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
            socket.Bind(end);
            Console.WriteLine("Success");
        }
        Console.ReadLine();
    }

}

在非管理员帐户上获取多个PGM侦听套接字的访问异常

我终于得到了微软的消息,但没有解决办法。

我找到了您的请求被拒绝的线路。

[0]22E8.1554::08/15/2012-10:05:19.015[sys]地址_c491PgmCreateAddress()-PgmCreateAddress:ERROR--非管理员用户正在尝试打开IP的2+1句柄:端口=

通过一点代码审查,我能够验证只有三个主体被授予访问权限,并且他们是管理员,LocalService和NetworkService。除了是管理员,没有解决方法。

我知道这不是你想听到的答案,但至少现在你有了一个确定的答案。