安全获取Windows机器的UUID?

问题描述 投票:0回答:2

我有一个正在销售的 adobe 3rd 方工具,我正在 Windows 上使用命令行来获取用户使用的 UUID:

wmic path win32_computersystemproduct get uuid

不幸的是,它不适用于少数用户,他们会收到找不到所请求的文件的错误。

有没有更好的方法来查找机器的UUID? 如果没有,是否有办法修改此代码,以便在找不到文件时不抛出错误?在我的 JavaScript 端使用 try-catch 似乎没有捕获错误。

batch-file cmd adobe
2个回答
0
投票

您可以使用我的wmiClass.bat程序版本1.3;只需从之前的链接复制 .BAT 文件即可。之后,将其与标准类名一起使用:

wmiClass.bat Win32_ComputerSystemProduct uuid

...或通过 wmic.exe 别名:

wmiClass.bat CSProduct uuid

如果 WMI 类或 wmic.exe Alias 不存在,该程序将捕获错误,并以错误消息结束且 %errorlevel% 等于 1。


0
投票

谢谢大家!我没想到这么快就有这么多帮助。我当前的解决方案(虽然缺乏)是这样的:

 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 来获取它(有更好的方法吗?)。这似乎有效,但如果有人想扩展我对这个主题的缺乏知识,请这样做。

非常有爱。

© www.soinside.com 2019 - 2024. All rights reserved.