无法在 Windows 7 上使用管理员帐户创建原始套接字
Can't create raw socket with admin account on Windows 7
根据 this page,如果帐户具有管理权限,则允许在 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;
}
我明白了:
socket failed: (10013) An attempt was made to access a socket in a way
forbidden by its access permissions.
但我是管理员:
这是我使用 Windows 7 Pro 的家用桌面。我安装了 McAfee Antivirus Plus,但禁用它没有任何效果。
这个程序在我的 Windows 7 Enterprise 笔记本电脑上运行良好。
有什么想法吗?
不确定为什么要使用原始套接字,但似乎解决方案是使用 winpcap 如果您 google 您可以找到使用它的示例。
这是一个示例:http://www.binarytides.com/raw-sockets-packets-with-winpcap/
在尝试此操作之前,我还要确保该程序 运行 作为管理员。也许您是管理员,但该程序没有 运行 该权限。
根据 this page,如果帐户具有管理权限,则允许在 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;
}
我明白了:
socket failed: (10013) An attempt was made to access a socket in a way forbidden by its access permissions.
但我是管理员:
这是我使用 Windows 7 Pro 的家用桌面。我安装了 McAfee Antivirus Plus,但禁用它没有任何效果。
这个程序在我的 Windows 7 Enterprise 笔记本电脑上运行良好。
有什么想法吗?
不确定为什么要使用原始套接字,但似乎解决方案是使用 winpcap 如果您 google 您可以找到使用它的示例。 这是一个示例:http://www.binarytides.com/raw-sockets-packets-with-winpcap/
在尝试此操作之前,我还要确保该程序 运行 作为管理员。也许您是管理员,但该程序没有 运行 该权限。