2016-02-12 5 views
1

Согласно 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) Сделана попытка доступа к сокету таким образом запрещенным правами доступа.

Но я администратор:

user account

Это на моем домашнем столе с Windows 7 Pro. У меня установлен McAfee Antivirus Plus, однако его отключение не повлияло.

Эта программа отлично работает на моем ноутбуке Windows 7 Enterprise.

Любые идеи?

+0

Вы запустили его поднять? (т. е. с «Запуск от имени администратора» или эквивалент) – immibis

ответ

1

Не знаете, почему вы хотите использовать сырые сокеты, но, похоже, решение должно использовать winpcap Если вы используете Google, вы можете найти примеры использования этого. Образец примера: http://www.binarytides.com/raw-sockets-packets-with-winpcap/

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

+0

Выбрав «Run as Admintrator», сделайте это. Кажется, мой ящик W7 Enterprise всегда запускает Командную подсказку в качестве администратора, поэтому он работал там. Мой ящик W7 Pro не делает этого, поэтому я должен был явно запустить его как администратор. – dbush

 Смежные вопросы

  • Нет связанных вопросов^_^