Получить приложения, используя открытые порты

хочу получить приложения, которые используют открытые порты на моем ПК. я использовал GetTcpPort получить список открытых портов

#pragma comment(lib, "iphlpapi.lib")
#pragma comment(lib, "ws2_32.lib")

#define addr_size (3 + 3*4 + 1)   // xxx.xxx.xxx.xxx\0

char const *dotted(DWORD input) {
char output[addr_size];

sprintf(output, "%d.%d.%d.%d",
input>>24,
(input>>16) & 0xff,
(input>>8)&0xff,
input & 0xff);
return strdup(output);
}

int main() {
MIB_TCPTABLE *tcp_stats = NULL;
MIB_UDPTABLE *udp_stats = NULL;
MIB_TCPROW2 *a = NULL;
DWORD size = 0;
unsigned i;
char const *s1, *s2;

GetTcpTable(tcp_stats, &size, TRUE);
tcp_stats = (MIB_TCPTABLE *)malloc(size);
GetTcpTable(tcp_stats, &size, TRUE);
printf("les ports :");
for (i=0; i<tcp_stats->dwNumEntries; ++i) {
printf("TCP:\t:%d\n",
ntohs(tcp_stats->table[i].dwLocalPort));
}
free(tcp_stats);
system("pause");
return 0;
}

Но я хочу получить приложение, которое использует каждый порт.

0

Решение

Вы можете использовать класс WMI Win32_Process http://msdn.microsoft.com/en-us/library/windows/desktop/aa394372(v=vs.85).aspx

2

Другие решения

На Vista и выше каждого MIB_TCPROW2 строка из таблицы соединений, возвращенная из GetTcpTable2 имеет dwOwningPid член, содержащий идентификатор процесса создания.

1

По вопросам рекламы [email protected]