Получение исключения доступа с несколькими сокетами прослушивания PGM для учетной записи без прав администратора

Следующий код прекрасно работает для учетной записи администратора, но для учетной записи без прав администратора он печатает дважды, а затем выдает исключение 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();
    }

}

1 ответ

Решение

Ну, я наконец получил сообщение от Microsoft по этому вопросу, и нет никакого обходного пути.

Мне удалось найти строку, где ваш запрос был отклонен.

[0] 22E8.1554:: 08/15 / 2012-10: 05: 19.015 [sys] address_c491 PgmCreateAddress () - PgmCreateAddress: ERROR - Пользователь без прав администратора пытается открыть дескриптор 2+1 для IP:Port=

После небольшого обзора кода я смог убедиться, что доступ предоставляется только трем принципалам: это Администраторы, LocalService и NetworkService. Помимо членства в Администраторах, нет обходного пути.

Я знаю, что это был не тот ответ, который вы хотели услышать, но, по крайней мере, теперь у вас есть подтвержденный ответ.

Другие вопросы по тегам