在非管理员帐户上获取多个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();
}
}
我终于得到了微软的消息,但没有解决办法。
我找到了您的请求被拒绝的线路。
[0]22E8.1554::08/15/2012-10:05:19.015[sys]地址_c491PgmCreateAddress()-PgmCreateAddress:ERROR--非管理员用户正在尝试打开IP的2+1句柄:端口=
通过一点代码审查,我能够验证只有三个主体被授予访问权限,并且他们是管理员,LocalService和NetworkService。除了是管理员,没有解决方法。
我知道这不是你想听到的答案,但至少现在你有了一个确定的答案。