Согласно this page, создание исходных сокетов под Windows 7 разрешено, если учетная запись имеет административные привилегии. Моя локальная учетная запись является администратором, но она по-прежнему не позволяет мне создавать сокет.Не удается создать сырой сокет с учетной записью администратора в Windows 7
Если я запускаю это:
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#include <ws2tcpip.h>
void sockerr(char *message)
{
char errbuf[300];
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, WSAGetLastError(),
0, errbuf, sizeof(errbuf), NULL);
printf("%s: (%d) %s", message, WSAGetLastError(), errbuf);
}
int main()
{
int sock;
struct sockaddr_in sin;
struct WSAData data;
if (WSAStartup(2, &data)) {
fprintf(stderr, "Error in WSAStartup: %d\n", WSAGetLastError());
exit(1);
}
sock = socket(AF_INET, SOCK_RAW, IPPROTO_IGMP);
if (sock == -1) {
sockerr("socket failed");
exit(1);
}
printf("opened raw socket\n");
closesocket(sock);
return 0;
}
я получаю это:
сокет не удалось: (10013) Сделана попытка доступа к сокету таким образом запрещенным правами доступа.
Но я администратор:
Это на моем домашнем столе с Windows 7 Pro. У меня установлен McAfee Antivirus Plus, однако его отключение не повлияло.
Эта программа отлично работает на моем ноутбуке Windows 7 Enterprise.
Любые идеи?
Вы запустили его поднять? (т. е. с «Запуск от имени администратора» или эквивалент) – immibis