Windows 创建原始套接字失败,代码10013

来源:互联网 发布:变形家具 知乎 编辑:程序博客网 时间:2024/05/23 17:01
Windows7旗舰版创建原始套接字失败,代码10013 

笔记本重装系统后,以前能运行的程序中的Ping程序不能运行了。查看代码,创建套接字失败。
RawSock = socket ( AF_INET, SOCK_RAW, IPPROTO_ICMP ) ;
RawSock==INVALID_SOCKET
用DWORD dwError=WSAGetLastError();查看错误代码为10013.
网上查了一下,说是权限被拒绝。以一种访问权限不允许的方式访问套接字。
说有可能是端口或IP冲突。但我的代码不是这两种原因。
后来收到一篇文章,http://blog.csdn.net/huaweiheart1/article/details/5915680
原始套接字SOCK_RAW 和 WINDOW7 普通家庭版
但这个方法,没试,不知道对于Windows7旗舰版是否管用。因为Windows7旗舰版,我的用户已经是属于Administrators管理员组的。
后来搜索原始套接字+Window7旗舰版关键字,看到这篇http://bbs.csdn.net/topics/350102571
虽然,没给出解决办法,但下面有人说管理员身份运行VS,就可以。
试了一下,确实可以。本以为问题得到解决,但发现编译生成的.exe文件双击运行时候,依然会报Socket错误。
但有了思路,知道和管理员权限有关,就有找解决方法的方向了。
计算机管理-本地用户和组——Administrator,取消勾选“账户已禁用”,然后用系统的Administrator这个内置的管理员账户登录,直接双击生成的exe程序可以运行。
我自己建立的这个管理员账户,却不可以。
然后,在这个exe文件上想办法。
直接在exe文件,右键管理员运行,可以正常运行,没有socket错误。
但这样还是有点麻烦。
于是找到了最善的解决方法:
以管理员身份运行VS;
生成的exe文件,属性——兼容性——特权等级,勾选“以管理员身份运行此程序”,确定后,双击此exe文件,则可以正常运行,没有报socket错误;(不过,勾选之后,这个勾选项就变成了灰色不可选状态了,不能再更改回去了:这个是因为我点击了“更改所有用户的设置”。再次点击,然后把“以管理员身份运行此程序”的勾选去掉即可,就可以设置这个用户是以管理员身份运行此程序。)
调试的时候,也可以正常调试,没有socket错误。
原创粉丝点击