我有一个正在销售的 adobe 3rd 方工具,我正在 Windows 上使用命令行来获取用户使用的 UUID:
wmic path win32_computersystemproduct get uuid
不幸的是,它不适用于少数用户,他们会收到找不到所请求的文件的错误。
有没有更好的方法来查找机器的UUID? 如果没有,是否有办法修改此代码,以便在找不到文件时不抛出错误?在我的 JavaScript 端使用 try-catch 似乎没有捕获错误。
您可以使用我的wmiClass.bat程序版本1.3;只需从之前的链接复制 .BAT 文件即可。之后,将其与标准类名一起使用:
wmiClass.bat Win32_ComputerSystemProduct uuid
...或通过 wmic.exe 别名:
wmiClass.bat CSProduct uuid
如果 WMI 类或 wmic.exe Alias 不存在,该程序将捕获错误,并以错误消息结束且 %errorlevel% 等于 1。
谢谢大家!我没想到这么快就有这么多帮助。我当前的解决方案(虽然缺乏)是这样的:
if (isWin) {
var systemRoot = system.callSystem("cmd /c echo %SystemRoot%") || "";
var rootDrive = systemRoot.substring(0, 2);
//var isRootDriveValid = rootDrive.length == 2 && rootDrive.charAt(1) == ":";
var wmicPath = rootDrive + "\\Windows\\System32\\wbem\\WMIC.exe";
var wmic = new File(wmicPath);
if (!wmic.exists) {
// wmic is not installed or not found
// Do something else instead of system.callSystem()
} else {
// wmic is installed
// system.callSystem("wmic path win32_computersystemproduct get uuid");
}
}
我已经与多个用户进行了测试,它解决了他们的问题。我可以使用此方法验证他们的计算机上是否缺少 WMIC.exe。
但是值得注意的是,我对命令行一无所知,所以请阅读评论,因为他们提供了很多深入的解决方案,我将继续努力学习。
正如 Mofi 在评论中提到的,callSystem() 不喜欢我使用 %SystemRoot%,所以我首先使用 echo 来获取它(有更好的方法吗?)。这似乎有效,但如果有人想扩展我对这个主题的缺乏知识,请这样做。
非常有爱。