From 780ff45fdc167cadf4724c6c94530929b7445aab Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期一, 16 三月 2026 10:37:51 +0800
Subject: [PATCH] 完善许可证
---
src/main/java/com/zy/system/entity/license/WindowsServerInfos.java | 107 +++++++++++++++++++++++++++++++++++------------------
1 files changed, 70 insertions(+), 37 deletions(-)
diff --git a/src/main/java/com/zy/system/entity/license/WindowsServerInfos.java b/src/main/java/com/zy/system/entity/license/WindowsServerInfos.java
index c575e6d..7ae9d96 100644
--- a/src/main/java/com/zy/system/entity/license/WindowsServerInfos.java
+++ b/src/main/java/com/zy/system/entity/license/WindowsServerInfos.java
@@ -1,8 +1,10 @@
package com.zy.system.entity.license;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
import java.net.InetAddress;
+import java.nio.charset.Charset;
import java.util.List;
-import java.util.Scanner;
import java.util.stream.Collectors;
/**
@@ -33,7 +35,11 @@
if(inetAddresses != null && inetAddresses.size() > 0){
//2. 鑾峰彇鎵�鏈夌綉缁滄帴鍙g殑Mac鍦板潃
- result = inetAddresses.stream().map(this::getMacByInetAddress).distinct().collect(Collectors.toList());
+ result = inetAddresses.stream()
+ .map(this::getMacByInetAddress)
+ .filter(mac -> mac != null && !mac.trim().isEmpty())
+ .distinct()
+ .collect(Collectors.toList());
}
return result;
@@ -41,45 +47,72 @@
@Override
protected String getCPUSerial() throws Exception {
- //搴忓垪鍙�
- String serialNumber = "";
-
- //浣跨敤WMIC鑾峰彇CPU搴忓垪鍙�
- Process process = Runtime.getRuntime().exec("wmic cpu get processorid");
- process.getOutputStream().close();
- Scanner scanner = new Scanner(process.getInputStream());
-
- if(scanner.hasNext()){
- scanner.next();
+ String serialNumber = readCommandValue("wmic", "cpu", "get", "processorid");
+ if (!isBlank(serialNumber)) {
+ return serialNumber;
}
-
- if(scanner.hasNext()){
- serialNumber = scanner.next().trim();
- }
-
- scanner.close();
- return serialNumber;
+ return readCommandValue("powershell", "-NoProfile", "-Command",
+ "(Get-CimInstance Win32_Processor | Select-Object -First 1 -ExpandProperty ProcessorId)");
}
@Override
protected String getMainBoardSerial() throws Exception {
- //搴忓垪鍙�
- String serialNumber = "";
-
- //浣跨敤WMIC鑾峰彇涓绘澘搴忓垪鍙�
- Process process = Runtime.getRuntime().exec("wmic baseboard get serialnumber");
- process.getOutputStream().close();
- Scanner scanner = new Scanner(process.getInputStream());
-
- if(scanner.hasNext()){
- scanner.next();
+ String serialNumber = readCommandValue("wmic", "baseboard", "get", "serialnumber");
+ if (!isBlank(serialNumber)) {
+ return serialNumber;
}
-
- if(scanner.hasNext()){
- serialNumber = scanner.next().trim();
- }
-
- scanner.close();
- return serialNumber;
+ return readCommandValue("powershell", "-NoProfile", "-Command",
+ "(Get-CimInstance Win32_BaseBoard | Select-Object -First 1 -ExpandProperty SerialNumber)");
}
-}
\ No newline at end of file
+
+ private String readCommandValue(String... command) {
+ try {
+ ProcessBuilder processBuilder = new ProcessBuilder(command);
+ processBuilder.redirectErrorStream(true);
+ Process process = processBuilder.start();
+ process.getOutputStream().close();
+
+ try (BufferedReader reader = new BufferedReader(
+ new InputStreamReader(process.getInputStream(), Charset.forName("GBK")))) {
+ String line;
+ while ((line = reader.readLine()) != null) {
+ String value = normalizeCommandOutput(line);
+ if (!isBlank(value)) {
+ return value;
+ }
+ }
+ }
+ } catch (Exception ignored) {
+ }
+ return "";
+ }
+
+ private String normalizeCommandOutput(String line) {
+ if (line == null) {
+ return "";
+ }
+ String value = line.trim();
+ if (isBlank(value)) {
+ return "";
+ }
+ String lower = value.toLowerCase();
+ if ("processorid".equals(lower) || "serialnumber".equals(lower)) {
+ return "";
+ }
+ if (lower.contains("access denied")
+ || lower.contains("鎷掔粷璁块棶")
+ || lower.contains("get-ciminstance")
+ || lower.contains("fullyqualifiederrorid")
+ || lower.contains("at line:")
+ || lower.contains("categoryinfo")
+ || lower.contains("cimexception")
+ || lower.contains("createprocess error")) {
+ return "";
+ }
+ return value;
+ }
+
+ private boolean isBlank(String value) {
+ return value == null || value.trim().isEmpty();
+ }
+}
--
Gitblit v1.9.1