概述:通过 COM 对象操作网卡

#include <NetCon.h>
void ChangeNetState()
{
    CoInitialize(NULL);
    INetConnectionManager* pNetManager;
    INetConnection* pNetConnection;
    IenumNetConnection* penum;
 
    if (S_OK != CoCreateInstance(CLSID_ConnectionManager, NULL, CLSCTX_SERVER, IID_INetConnectionManager, (void**)&pNetManager))
    {
        return ;
    }
 
    pNetManager->EnumConnections(NCME_DEFAULT, &pEnum);
    pNetManager->Release();
    if (NULL == pEnum)
    {
        return ;
    }
 
    ULONG celtFetched;
    while (pEnum->Next(1, &pNetConnection, &celtFetched) == S_OK)
    {
        NETCON_PROPERTIES* properties;
        pNetConnection->GetProperties(&properties);
        //properties->pszwName; //网络连接的名称
        //properties->pszwDeviceName; //网卡名称
        //properties->Status;     //状态
 
        //pNetConnection->Disconnect(); //禁用网卡
        //pNetConnection->Connect();    //启用网卡
    }
    CoUninitialize();
    return ;
}
 

NETCON_PROPERTIES 结构体使用的变量为宽字符,在打印时需要在程序入口调用以下函数才能正确输出。

setlocale(LC_CTYPE, "chs");