该Java程序通过执行系统命令获取Windows操作系统的MAC地址、硬盘序列号和IP地址。首先,根据操作系统类型确定cmd.exe的路径,然后使用Runtime.exec()方法执行相关命令。通过读取命令输出,解析出所需信息,包括Volume Serial Number(硬盘序列号)、Physical Address(MAC地址)和IP Address。
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; publicclass MacSerIpTest ...{ /** *//** * @param args * @throws IOException */ publicstaticvoid main(String[] args) ...{ String osName = System.getProperty("os.name"); StringBuffer systemPathBuff =new StringBuffer(""); if (osName.indexOf("Windows") >-1) ...{ // Windows操作系统的cmd.exe的绝对路径 systemPathBuff.append("c:/WINDOWS/system32/cmd.exe"); } if (osName.indexOf("NT") >-1) ...{ // NT操作系统的cmd.exe的绝对路径 systemPathBuff.append("c:/WINDOWS/command.com"); } // Process pro =null; try...{ // Serial Number 的得到 // 此语句相当于在cmd下面执行 dir的命令.并得到命令执行完毕后的输出流 pro = Runtime.getRuntime().exec(systemPathBuff.toString() +" /c dir"); InputStream is = pro.getInputStream(); BufferedReader br =new BufferedReader(new InputStreamReader(is)); // 读取第一行 String message = br.readLine(); // Serial Number 的零时变量 String serNuResult =null; int index =-1; while (message !=null) ...{ if ((index = message.indexOf("Volume Serial Number is")) >0) ...{ serNuResult = message.substring(index +24).trim(); break; } // 读取下一行 message = br.readLine(); } System.out.println(serNuResult); // Mac地址的得到 // 此语句相当于在cmd下面执行 ipconfig/all 的命令.并得到命令执行完毕后的输出流 pro = Runtime.getRuntime().exec(systemPathBuff.toString() +" /c ipconfig/all"); is = pro.getInputStream(); br =new BufferedReader(new InputStreamReader(is)); // 读取第一行 message = br.readLine(); // Mac地址 的零时变量 String macResult =null; while (message !=null) ...{ if ((index = message.indexOf("Physical Address")) >0) ...{ macResult = message.substring(index +36).trim(); break; } // 读取下一行 message = br.readLine(); } System.out.println(macResult); // 读取下一行 message = br.readLine(); // Mac地址和IP地址 的得到 // IP地址 的零时变量 String ipResult =null; while (message !=null) ...{ if ((index = message.indexOf("IP Address")) >0) ...{ ipResult = message.substring(index +36).trim(); break; } // 读取下一行 message = br.readLine(); } System.out.println(ipResult); // 读入流的关闭 br.close(); pro.destroy(); }catch (IOException e) ...{ System.out.println("Can't get mac address!"); } } }