0

PC で開いているポートを使用するアプリケーションを取得したい。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;
}

しかし、各ポートを使用するアプリケーションを取得したい。

4

2 に答える 2

2

WMI クラスWin32_Process http://msdn.microsoft.com/en-us/library/windows/desktop/aa394372(v=vs.85).aspxを使用できます

于 2013-04-01T13:27:39.270 に答える
1

Vista以降では、MIB_TCPROW2から返される接続テーブルの各行には、作成プロセスのプロセス ID を含むメンバーがあります。GetTcpTable2dwOwningPid

于 2013-03-21T10:53:04.137 に答える