SOCKET连接代码没有问题,很简单就是
SOCKET CommonConnect()
{
SOCKET CommonSocket = socket(AF_INET, SOCK_STREAM, 0);
if(CommonSocket==INVALID_SOCKET) return 0; struct sockaddr_in LocalAddr;
LocalAddr.sin_family=AF_INET;
LocalAddr.sin_port=htons(ServerPort);//ServerPort和ServerAddr都验证过了是合法的
LocalAddr.sin_addr.S_un.S_addr=inet_addr(ServerAddr);
if(connect(CommonSocket,(PSOCKADDR)&LocalAddr,sizeof(LocalAddr)) != SOCKET_ERROR)
return CommonSocket;
char szLog[50]={0};
sprintf(szLog,"GetLastError %d",WSAGetLastError());
OutputDebugString(szLog)
flog(szLog);
closesocket(CommonSocket);
return 0;//connect error
}在XP下个建立一个监听(listen),这段连接代码放在win7下以SYSTEM权限进行连接就会出错(XP下没问题,win7管理员非管理员都没问题),错误码10013
寻思几天不知道解法,希望大家帮帮忙补充:
我的这个socket连接写在一个dll中,大概过程是这样的
Win7下面的系统服务启动的一个EXE程序,这个程序是SYSTEM权限,在EXE里面调用一个dll,在DllMain的DLL_PROCESS_ATTACH里面调用Rundll32来启动自身的一个线程函数(这么做是因为实在没法在DllMain里面创建线程),这个线程函数负责一切的SOCKET连接,由于Win7的权限继承机制,通过观察确实这个Rundll32启动也是SYSTEM身份,能做很多事,但是确无法进行SOCKET连接了,不知道有没有人碰到过类似的问题过程有点复杂,至于为什么不直接在EXE里面连接而要用dll,是由于其他原因限制,(EXE是系统自带的一个程序,不受我的控制,但它能帮我启动DLL,这是我调试到的一个可利用bug)
SOCKET CommonConnect()
{
SOCKET CommonSocket = socket(AF_INET, SOCK_STREAM, 0);
if(CommonSocket==INVALID_SOCKET) return 0; struct sockaddr_in LocalAddr;
LocalAddr.sin_family=AF_INET;
LocalAddr.sin_port=htons(ServerPort);//ServerPort和ServerAddr都验证过了是合法的
LocalAddr.sin_addr.S_un.S_addr=inet_addr(ServerAddr);
if(connect(CommonSocket,(PSOCKADDR)&LocalAddr,sizeof(LocalAddr)) != SOCKET_ERROR)
return CommonSocket;
char szLog[50]={0};
sprintf(szLog,"GetLastError %d",WSAGetLastError());
OutputDebugString(szLog)
flog(szLog);
closesocket(CommonSocket);
return 0;//connect error
}在XP下个建立一个监听(listen),这段连接代码放在win7下以SYSTEM权限进行连接就会出错(XP下没问题,win7管理员非管理员都没问题),错误码10013
寻思几天不知道解法,希望大家帮帮忙补充:
我的这个socket连接写在一个dll中,大概过程是这样的
Win7下面的系统服务启动的一个EXE程序,这个程序是SYSTEM权限,在EXE里面调用一个dll,在DllMain的DLL_PROCESS_ATTACH里面调用Rundll32来启动自身的一个线程函数(这么做是因为实在没法在DllMain里面创建线程),这个线程函数负责一切的SOCKET连接,由于Win7的权限继承机制,通过观察确实这个Rundll32启动也是SYSTEM身份,能做很多事,但是确无法进行SOCKET连接了,不知道有没有人碰到过类似的问题过程有点复杂,至于为什么不直接在EXE里面连接而要用dll,是由于其他原因限制,(EXE是系统自带的一个程序,不受我的控制,但它能帮我启动DLL,这是我调试到的一个可利用bug)
解决方案 »
- 我下了一个VC的源码 是在vc6.0英文版开发出来的 不支持中文 怎么样才能让这个源码支持中文呢
- 求助关于VC对话框的刷新和客户区的程序关联问题!!100分
- freestyle键盘模拟
- 新手VC++ + MSComm控件问题,请各位都进来看看!!我没法交差啊!!晕了我,我只有这些分了!帮忙啊
- MFC拆分窗口后,显示Opengl视图,紧急求救!!
- 请问出现“无效的描述器索引”是怎么回事?(急)
- 关于结构体设为全局变量
- 怎样用vc实现打印?发言者有分!
- 求助 判断是否是相同的块(图像拼接)
- 大家说如何用在以文本的方式读取数据中判断是否到了文件的末尾,我知道二进制中有tellg() 我还知道这个问题很菜,但是一定给分
- vs2005 mfc开发 一套代码管理多个项目 多个不同项目的资源文件
- mfc菜单打钩问题
这里看看有什么启发了