win7上sendto(),居然来个没有权限,高人指点

win7下sendto(),居然来个没有权限,高人指点!
有一段代码,在XP下没问题,在win7下问题就来了:

调用sendto()发消息的时候,操作返回结果值为

Error 10013:以一种访问权限不允许的方式做了一个访问套接字的尝试。 


有人说用过管理员权限运行可以解决,但测试了下不行,不过行也没用,没有人运行个简单的程序要求人家右键选择方式.

还有就是bind()前设置一下属性:
BOOL bBroadcast=TRUE;  
setsockopt(m_Socket,SOL_SOCKET,SO_BROADCAST,(const char *)&bBroadcast,sizeof(BOOL)); //设置广播权限  

这个是可以通过并发送出去,但是服务端返回发给我,我检测IP源(服务端返回信息)的IP是255.255.255.255,估计是通过广播方式过来的(这个我也不太懂),
我的程序恰好有过滤来源IP的特性(只接收来自我发往的服务器Ip的信息),而且有不同的ip分流的处理,来了个255.255.255.255,就不知道仍给谁,也不允许

它这样.(这个是client和server都是局域网)

请问高手们,有没有办法将这个恶心的win7这个情况解决,希望高手们伸出援助之手,呵呵...感谢万分!!!!!!



相关代码:
C/C++ code




        m_Socket=socket(AF_INET,SOCK_DGRAM,0);      //创建UDP套接字   

        //这2行解决 Error:10013
        BOOL bBroadcast=TRUE; 
        setsockopt(m_Socket,SOL_SOCKET,SO_BROADCAST,(const char *)&bBroadcast,sizeof(BOOL));  //设置广播权限   

        if (m_Socket == INVALID_SOCKET) 
        {
                    ATLTRACE("Tracker-Net Client Creating UDP socket Error:%d \n", WSAGetLastError());
            return PRT_NET;
        }


    sockaddr_in addr;
    memset(&addr, 0, sizeof(addr));
    addr.sin_family = AF_INET;
    // 绑定所有本机IP
    addr.sin_addr.s_addr = INADDR_ANY;

    //也ok
    bind(m_Socket, (sockaddr*)&addr, sizeof(addr));



    //sendto()时有10013错误
           sendto(.....);





------解决方案--------------------
光用管理员权限运行,和不用是没有任何区别的。

你需要OpenProcessToken、AdjustTokenPrivileges来开启相应的权限。
------解决方案--------------------
监测到255。255。255。255说明是本机广播,而不是服务端发来得。发送广播不需要绑定本机地址
------解决方案--------------------
关键的sendto参数居然省略了,如果还是用的bind的地址就有可能有问题,因为没有指定端口
------解决方案--------------------
你需要OpenProcessToken、AdjustTokenPrivileges来开启相应的权限。
------解决方案--------------------
帮顶!!!
------解决方案--------------------
你可以在程序内部获取管理员权限啊
没必要让用户右键管理员启动
网络通信当然要限制
你觉的你的应用简单
可是再复杂的应用不还是基于这个的
------解决方案--------------------
我的的一个TCP程序,没要获得什么权限就也可以啊?
还有,楼主的管理员是真正的管理员“Administrator”用户,还是一个所谓的有管理员权限的用户?我的程序在Win7 “Administrator”下运行的
------解决方案--------------------
真是奇怪的问题啊,帮顶。
------解决方案--------------------
我也是WIN7 但我写的一切正常啊。。而且我的用户不是管理员~~
再仔细查找一下,,端口要设置一下,我上次有个出错也是这,没写端口,然后后面的操作全是返回-1,WSAGetLastError() 返回的又是0,,找了半天郁闷死了,最后发现没有设置端口。。。失误啊