我有一个卖给用户的adobe第三方工具,我使用windows上的命令行为用户获取UUID:
wmic path win32_computersystemproduct get uuid
不幸的是,它并不适用于少数用户,这些用户收到了文件请求无法找到的错误。
有没有更好的方法来找到自己机器的UUID?如果没有,是否有一种方法可以修改此代码以避免在找不到文件时抛出错误?在我的JavaScript端使用try-catch似乎没有捕捉到错误。
发布于 2022-03-02 04:51:48
您可以使用我的wmiClass.bat程序版本1.3;只需从前面的链接复制.BAT文件即可。之后,将它与标准类名一起使用:
wmiClass.bat Win32_ComputerSystemProduct uuid
..。或者通过wmic.exe别名:
wmiClass.bat CSProduct uuid
如果WMI类或wmic.exe别名不存在,并以错误消息和%错误级别%等于1结尾,则此程序将捕获错误。
发布于 2022-03-03 07:16:31
谢谢大家!我没想到这么快就能得到这么多帮助。我目前的解决办法(虽然缺乏)是这样的:
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。
然而,值得注意的是,当涉及到命令行时,我大麦知道任何事情,所以请阅读这些评论,因为它们提供了很多深入的解决方案,我将继续努力学习。
正如莫菲在评论中提到的,callSystem()不喜欢我使用%SystemRoot%,所以我首先使用echo (有更好的方法吗?)这似乎是可行的,但如果有人想扩大我的知识,请做。
太多的爱。
https://stackoverflow.com/questions/71285423
复制相似问题