Сбой sendto с пользователем без прав администратора с кодом ошибки 10013 - PullRequest
0 голосов
/ 26 октября 2009

Я нашел больше исходников, которые работают как ping. Моя единственная проблема с ними заключается в том, что если я запускаю программу с правами администратора, то я получаю код ошибки 10013, который означает: «Была сделана попытка получить доступ к сокету способом, запрещенным его правами доступа». Если я запускаю программу с пользователем, который является членом группы администраторов, то она работает нормально.

nResult = sendto (sock, pSendBuffer, sizeof (ICMPheader) + nMessageSize, 0, (SOCKADDR *)&dest, sizeof (SOCKADDR_IN));  
        ::GetSystemTime (&timeSend);  
        ++nPacketsSent;  
        if (nResult == SOCKET_ERROR)  
        {    
        cerr << endl << "An error occured in sendto operation: "  << "WSAGetLastError () = " << WSAGetLastError () << endl;  
                  }  

Может кто-нибудь помочь мне решить эту проблему или сказать, почему не пользователь без прав администратора может использовать этот код? Если нет, то я бы оценил некоторый код, который я могу использовать с пользователем, который не является членом группы администраторов.

Заранее спасибо!

Kampi

Ответы [ 3 ]

2 голосов
/ 26 октября 2009

Если вы хотите реализовать функцию ping в своем приложении в Windows, вам следует взглянуть на функцию IcmpSendEcho2 вместо того, чтобы пытаться использовать необработанные сокеты.

2 голосов
/ 26 октября 2009
1 голос
/ 26 октября 2009

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

из-за соображений безопасности (люди, которые рассматривали эти соображения, не особо задумывались, но это для другого поста), необработанные сокеты доступны только для учетных записей, имеющих права администратора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...