Windows获得MAC地址

Windows获得MAC地址,StringBuffer是一个自定义的字符串类,可参考http://www.cnblogs.com/hatsusakana/p/7866387.html

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <windowsx.h>

extern "C"
{
    #include "StringBuffer.h"
}

typedef struct _Mac
{
    char MacName[256];
    char MacAdd[256];
}Mac;

int WindowsCommand(StringBuffer *sb,char *cmd)
{
    SECURITY_ATTRIBUTES sa;
    HANDLE hRead,hWrite;
    sa.nLength = sizeof(SECURITY_ATTRIBUTES);
    sa.lpSecurityDescriptor = NULL;
    sa.bInheritHandle = TRUE;
    if (!CreatePipe(&hRead,&hWrite,&sa,0)) return 0;
    char command[1024];
    ZeroMemory(command,sizeof(command));
    strcpy(command,TEXT("Cmd.exe /C "));
    strcat(command,cmd);
    STARTUPINFO si;
    PROCESS_INFORMATION pi;
    si.cb = sizeof(STARTUPINFO);
    GetStartupInfo(&si);
    si.hStdError = hWrite;
    si.hStdOutput = hWrite;
    si.wShowWindow = SW_HIDE;
    si.dwFlags = STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;
    if (!CreateProcess(NULL,command,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi))
    {
        CloseHandle(hWrite);
        CloseHandle(hRead);
        return 0;
    }
    CloseHandle(hWrite);
    char buffer[2048],*result = NULL;
    ZeroMemory(buffer,sizeof(buffer));
    DWORD bytesRead;
    while(ReadFile(hRead,buffer,sizeof(buffer),&bytesRead,NULL) && bytesRead>0)
    {
        StringBufferAddEx(sb,buffer,bytesRead);
        ZeroMemory(buffer,sizeof(buffer));
    }
    CloseHandle(hRead);
    return 1;
}

int main(int argc,char *argv[])
{
    StringBuffer sb;
    StringBufferInit(&sb);
    WindowsCommand(&sb,"ipconfig /all");
    char *buf = StringBufferToString(&sb);
    StringBufferFree(&sb);

    char *ms = strstr(buf,"描述");
    while(ms != NULL)
    {
        Mac mac;
        memset(&mac,0,sizeof(Mac));
        sscanf(ms,"%*[^:]%*[^ ]%[^\n]",mac.MacName);
        ms = strstr(ms,"物理地址");
        if(ms) sscanf(ms,"%*[^:]%*[^ ]%[^\n]",mac.MacAdd);

        printf("%s\n%s\n\n",mac.MacName+1,mac.MacAdd+1);
        ms = strstr(ms,"描述");
    }

    return 1;
}
时间: 2024-10-13 20:12:55

Windows获得MAC地址的相关文章

Windows修改MAC地址

谈起mac地址我想大多数人都比较清楚,一旦我们设置了它就能在局域网防止别人盗用你的ip,不过如果mac地址被别人知道了就得修改一下,很多用户不知道Win7怎么改mac地址?其实这个问题很简单,不知道的朋友可以看看小编整理的Win7改mac地址方法. 方法/步骤: 1.打开开始菜单,选择控制面板. 2.打开控制面板项,选择网络和共享中心. 3.选择更改适配器设置. 4.选择本地要修改mac地址的网卡. 5.右键该网卡,选择属性. 6.从弹出的属性设置框中选择配置. 7.进行配置设置框,选择高级选项

windows获取本机MAC地址并写入文件的bat

windows获取本机MAC地址并写入文件的bat MAC(Media Access Control)地址,或称为 MAC地址.硬件地址,用来定义网络设备的位置. bat代码例如以下: @echo off echo GET MAC ADDRESS echo PLEASE WAIT... getmac /v > mac.txt echo GET MAC ADDRESS SUCCESS pause exit 查看mac.txt,获取成功 连接名 网络适配器 物理地址 传输名称 ===========

java工具类,在Windows,Linux系统获取电脑的MAC地址、本地IP、电脑名

package com.cloudssaas.util; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.InetAddress; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.rege

Windows 7 下IP和MAC地址的绑定

Windows 7 下IP和MAC地址的绑定     最近要和机房AIX主机进行远程(telnet)连接,但经常出现客户端ip和机房主机ip冲突,因此在client(windows 7)下执行ip(AIX 主机)和mac地址的绑定,以解决ip冲突问题.   1.查看AIX主机ip及mac地址 2.在win7客户端查看绑定的网卡信息 查看命令:netsh interface ipv4 show interface                     其中idx=11的代表为本地连接的网卡 3.

Python windows下获取MAC地址的一种方法

我最近有一个项目,使用Python在win32下开发一个COM组建,该COM组建其中一个方法是获取本地电脑的MAC地址. 需求很简单,虽然我是Python新手中的新手,但我还是会使用搜索引擎进行搜索. 百度一下,发现大部分都介绍使用import UUID获取MAC地址,或使用os.popen("ipconfig /all")的方式获取.而后者容易受到操作系统中英文环境影响. 如这篇文章:http://www.cnblogs.com/Jerryshome/archive/2011/11/

Java获取操作系统的本机ip和Mac地址

获取局域网ip和mac(如果电脑没有直接连接外网),否则获取公网ip 通过第三放获取公网ip package org.twt.zipjar.test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.Inet4Address; import java.net.InetAdd

wince 6.0下UDP通信需要注意MAC地址

最近在wince6.0下进行网络通信,在ARM下使用UDP通信协议.当然了,首先按照自己的使用配置wince中的IP,修改注册表即可. 我是wince的菜鸟,但是绝不是使用UDP通信的新手,在windows下跑过多次的UDP发送端和接收端,在wince下却怎么都不能像在windows下使用那么顺利,出现了不可理解的现象: (1)wince和wince相互通信,发送成功了,可是接收端却没有收到数据包: (2)wince和windows相互通信,发送和接收都正常: (3)wince和windows互

突破路由mac地址过滤思路

一.获取合法的mac地址 在拿到无线网络的密码时,主要思路就是,用类似airodump-ng这类监听软件(WildPackets OmniPeek,Kismet),获得合法客户端的mac地址,然后再更改自己设备的mac地址来伪造身份 二.修改mac地址,伪装合法ID windows 下: 1 .如果驱动支持的话,可以直接在无线网卡的属性中点击“高级”配置来查看,如果出现"Locally administered MAC adress"选项的话,就能直接修改. 2.也能直接通过SMAC这

IP地址与MAC地址

众所周知,每一块网卡在出厂时都烧录了世界唯一的MAC地址,使用该地址可以在网络中识别不同的计算机.同时,互联网中也使用IP地址来定位客户端,这是因为IP地址比MAC地址定位更方便,而且也更加便于记忆.  1.1 IP地址在大多数的局域网中,IP地址是计算机之间通信的唯一依据.当网络中计算机数量比较多时,想要准确记忆每一台计算机的IP地址,显然是一件不太可能的事情.如果网络规模相当大,而且划分了VLAN,那么网络管理员更无法准确记忆用户IP地址了. IP信息查看--ipconfigipconfig