获取MAC地址SQL语句

SELECT DISTINCT
        MacAddress = net_address
FROM    master..sysprocesses
WHERE   hostname = LEFT(@@servername, CHARINDEX('\ ', @@servername + '\ ') - 1)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Windows平台上,获取网卡MAC地址可以通过使用WMI(Windows Management Instrumentation)或API函数来实现。其中,使用API函数要求较高,而使用WMI则相对简单。以下是使用WMI获取网卡MAC地址的示例代码(C++): ```cpp #include <iostream> #include <comdef.h> #include <Wbemidl.h> #pragma comment(lib, "wbemuuid.lib") int main() { HRESULT hres; // 初始化COM库 hres = CoInitializeEx(0, COINIT_MULTITHREADED); if (FAILED(hres)) { std::cerr << "Failed to initialize COM library" << std::endl; return 1; } // 设置安全级别 hres = CoInitializeSecurity( NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_DEFAULT, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, NULL ); if (FAILED(hres)) { std::cerr << "Failed to initialize security" << std::endl; CoUninitialize(); return 1; } // 获取WMI服务 IWbemLocator* pLoc = NULL; hres = CoCreateInstance( CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER, IID_IWbemLocator, (LPVOID*)&pLoc ); if (FAILED(hres)) { std::cerr << "Failed to create IWbemLocator object" << std::endl; CoUninitialize(); return 1; } IWbemServices* pSvc = NULL; hres = pLoc->ConnectServer( _bstr_t(L"ROOT\\CIMV2"), NULL, NULL, 0, NULL, 0, 0, &pSvc ); if (FAILED(hres)) { std::cerr << "Failed to connect to IWbemServices object" << std::endl; pLoc->Release(); CoUninitialize(); return 1; } // 设置WMI服务的安全级别 hres = CoSetProxyBlanket( pSvc, RPC_C_AUTHN_WINNT, RPC_C_AUTHZ_NONE, NULL, RPC_C_AUTHN_LEVEL_CALL, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE ); if (FAILED(hres)) { std::cerr << "Failed to set security on IWbemServices object" << std::endl; pSvc->Release(); pLoc->Release(); CoUninitialize(); return 1; } // 查询网卡信息 IEnumWbemClassObject* pEnumerator = NULL; hres = pSvc->ExecQuery( _bstr_t("WQL"), _bstr_t("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = 'TRUE'"), WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, NULL, &pEnumerator ); if (FAILED(hres)) { std::cerr << "Failed to execute WQL query" << std::endl; pSvc->Release(); pLoc->Release(); CoUninitialize(); return 1; } // 遍历查询结果 ULONG uReturn = 0; while (pEnumerator) { IWbemClassObject* pclsObj = NULL; HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1, &pclsObj, &uReturn); if (0 == uReturn) { break; } VARIANT vtProp; hr = pclsObj->Get(L"MACAddress", 0, &vtProp, 0, 0); if (SUCCEEDED(hr)) { std::wcout << "MAC Address: " << vtProp.bstrVal << std::endl; VariantClear(&vtProp); } pclsObj->Release(); } // 释放资源 pEnumerator->Release(); pSvc->Release(); pLoc->Release(); CoUninitialize(); return 0; } ``` 其中,关键的查询语句为: ```sql SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = 'TRUE' ``` 该语句查询所有已启用IP协议的网络适配器的配置信息,其中包括MAC地址。最终的结果通过遍历查询结果来获取

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值