Windows7旗舰版和10 创建原始套接字失败,代码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
但这个方法,没试,不知道对于Windows7旗舰版是否管用。因为Windows7旗舰版,我的用户已经是属于Administrators管理员组的。
后来搜索原始套接字+Window7旗舰版关键字,看到这篇http://bbs.csdn.net/topics/350102571
虽然,没给出解决办法,但下面有人说管理员身份运行VS,就可以。
试了一下,确实可以。本以为问题得到解决,但发现编译生成的.exe文件双击运行时候,依然会报Socket错误。
但有了思路,知道和管理员权限有关,就有找解决方法的方向了。
计算机管理-本地用户和组——Administrator,取消勾选“账户已禁用”,然后用系统的Administrator这个内置的管理员账户登录,直接双击生成的exe程序可以运行。
我自己建立的这个管理员账户,却不可以。
然后,在这个exe文件上想办法。
直接在exe文件,右键管理员运行,可以正常运行,没有socket错误。
但这样还是有点麻烦。
于是找到了最善的解决方法:
以管理员身份运行VS;
生成的exe文件,属性——兼容性——特权等级,勾选“以管理员身份运行此程序”,确定后,双击此exe文件,则可以正常运行,没有报socket错误;(不过,勾选之后,这个勾选项就变成了灰色不可选状态了,不能再更改回去了:这个是因为我点击了“更改所有用户的设置”。再次点击,然后把“以管理员身份运行此程序”的勾选去掉即可,就可以设置这个用户是以管理员身份运行此程序。)
调试的时候,也可以正常调试,没有socket错误。

//创建原始套接字
m_s=socket(AF_INET,SOCK_RAW,IPPROTO_IP);

由于SOCK_RAW要管理员权限,在win系统中, 无法创建成功,以管理员方式运行也不行.

解决方法1:用管理员权限启动VS2012, 重新编译.。

解决方法2:http://jingyan.baidu.com/article/90808022a46db9fd90c80f6d.html

其他方法:程序解决,望各位大大告诉委屈



  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值