Java Windowsハードウェア情報の取得

3187 ワード

Java Windowsハードウェア情報の取得
 
        /**
	 * @param drive          C,D
	 * @return       
	 */
	public static String getHDSerial(String drive) {
		String result = "";
		try {
			File file = File.createTempFile("tmp", ".vbs");
			file.deleteOnExit();
			FileWriter fw = new java.io.FileWriter(file);
			String vbs = "Set objFSO = CreateObject(\"Scripting.FileSystemObject\")
" + "Set colDrives = objFSO.Drives
" + "Set objDrive = colDrives.item(\"" + drive + "\")
" + "Wscript.Echo objDrive.SerialNumber"; fw.write(vbs); fw.close(); Process p = Runtime.getRuntime().exec("cscript //NoLogo " + file.getPath()); BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); String line; while ((line = input.readLine()) != null) { result += line; } input.close(); file.delete(); } catch (Exception e) { } if (result.trim().length() < 1 || result == null) { result = " ID "; } return result.trim(); } /** * CPU , CPU , * @return */ public static String getCPUSerial() { String result = ""; try { File file = File.createTempFile("tmp", ".vbs"); file.deleteOnExit(); FileWriter fw = new java.io.FileWriter(file); String vbs = "On Error Resume Next \r
\r
" + "strComputer = \".\" \r
" + "Set objWMIService = GetObject(\"winmgmts:\" _ \r
" + " & \"{impersonationLevel=impersonate}!\\\\\" & strComputer & \"\\root\\cimv2\") \r
" + "Set colItems = objWMIService.ExecQuery(\"Select * from Win32_Processor\") \r
" + "For Each objItem in colItems\r
" + " Wscript.Echo objItem.ProcessorId \r
" + " exit for ' do the first cpu only! \r
" + "Next "; fw.write(vbs); fw.close(); Process p = Runtime.getRuntime().exec("cscript //NoLogo " + file.getPath()); BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); String line; while ((line = input.readLine()) != null) { result += line; } input.close(); file.delete(); } catch (Exception e) { e.fillInStackTrace(); } if (result.trim().length() < 1 || result == null) { result = " CPU_ID "; } return result.trim(); } /*** * MAC * @return */ public String getMac() { String macStr = null; try { InetAddress ip = InetAddress.getLocalHost(); NetworkInterface network = NetworkInterface.getByInetAddress(ip); byte[] mac = network.getHardwareAddress(); System.out.print("Current MAC address : "); StringBuilder sb = new StringBuilder(); for (int i = 0; i < mac.length; i++) { sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : "")); } macStr = sb.toString(); System.out.println(sb.toString()); } catch (Exception e) { e.printStackTrace(); } return macStr; }