找回密码
 加入
搜索
楼主: zbezj

[系统综合] WMIC命令转AU3的问题?

[复制链接]
发表于 2021-10-26 21:39:42 | 显示全部楼层
激活要这么费劲么,批处理就行了
发表于 2021-10-26 23:26:23 | 显示全部楼层
慢慢玩




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2021-10-27 19:07:30 | 显示全部楼层

我安装的AccAu3Inst_1.5.11.127,竟然没有这个工具箱。。
 楼主| 发表于 2021-10-27 19:26:33 | 显示全部楼层

方便发一下你这个版本的AU3吗,谢谢
 楼主| 发表于 2021-10-27 19:47:37 | 显示全部楼层

多谢大神指点,已经在Q群里找到版本了。
 楼主| 发表于 2021-10-27 20:54:16 | 显示全部楼层

研究了一下,程序扩展工具中提供的这个代码。和我1楼写的第一个转化方法一样,都是获取各种信息。等同于wmic命令中的get,比如:get Version (获取版本号)


而我想知道call Activate(执行Activate这个方法),怎么转化为AU3。貌似程序扩展工具中并没有介绍555555555




发表于 2021-11-1 15:11:47 | 显示全部楼层
产品ID要找对,否则会报错

Local $sProductID = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' ;产品ID
Local $colServices = ObjGet("winmgmts:").ExecQuery("SELECT Version FROM SoftwareLicensingService")
For $objProduct In ObjGet("winmgmts:").ExecQuery("SELECT ID FROM SoftwareLicensingProduct where id = '" & $sProductID & "'")
        $objProduct.Activate()
        For $objService In $colServices
                $objService.RefreshLicenseStatus()
        Next
        $objProduct.refresh_
Next





 楼主| 发表于 2021-11-1 20:28:29 | 显示全部楼层
zghwelcome 发表于 2021-11-1 15:11
产品ID要找对,否则会报错

多谢多谢。貌似执行不报错了。

$objProduct.Activate()执行的返回值请问怎么获取呀?有时代码执行成功,但正常可能会有错误代码返回,想获取这个错误代码。
 楼主| 发表于 2021-11-1 20:39:40 | 显示全部楼层
zghwelcome 发表于 2021-11-1 15:11
产品ID要找对,否则会报错

现在执行结果是空的



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2021-11-1 20:50:30 | 显示全部楼层
这个没有返回结果的,没有报错就成功
 楼主| 发表于 2021-11-1 20:56:59 | 显示全部楼层
zghwelcome 发表于 2021-11-1 20:50
这个没有返回结果的,没有报错就成功

$objProduct.Activate()因为这个是执行激活的命令,虽然代码执行成功了。但是激活有可能成功也有可能失败啊,万一失败,错误代码也看不了吗? 使用wmic命令可以看错误代码、
 楼主| 发表于 2021-11-1 21:05:33 | 显示全部楼层
zghwelcome 发表于 2021-11-1 20:50
这个没有返回结果的,没有报错就成功

并且还有个问题,这个代码执行虽然不报错了,但是有时貌似没有执行。因为msgbox没有弹出来。但有时能弹出,有时不弹出,好奇怪。
发表于 2021-11-1 21:55:25 | 显示全部楼层
你弄个函数就行了啊


Local $sProductID = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' ;产品ID
Activate($sProductID)
If Not @error Then
        MsgBox(512, '', '成功')
Else
        MsgBox(16, '', '失败')
EndIf

Func Activate($sProductID)
        Local $colServices = ObjGet("winmgmts:").ExecQuery("SELECT Version FROM SoftwareLicensingService")
        For $objProduct In ObjGet("winmgmts:").ExecQuery("SELECT ID FROM SoftwareLicensingProduct where id = '" & $sProductID & "'")
                $objProduct.Activate()
                For $objService In $colServices
                        $objService.RefreshLicenseStatus()
                Next
                $objProduct.refresh_
                Return True
        Next
        Return SetError(1, 0, False)
EndFunc   ;==>Activate



 楼主| 发表于 2021-11-1 22:10:21 | 显示全部楼层
zghwelcome 发表于 2021-11-1 21:55
你弄个函数就行了啊
Local $owinmgmts = ObjGet("winmgmts:")
Local $sProductID = '4de7cb65-cdf1-4de9-8ae8-e3cce27b9f2c' ;产品ID
Local $colServices = ObjGet("winmgmts:").ExecQuery("SELECT Version FROM SoftwareLicensingService")
For $objProduct In ObjGet("winmgmts:").ExecQuery("SELECT ID FROM SoftwareLicensingProduct where id = '" & $sProductID & "'")
        $objProduct.Activate()
        MsgBox(64, 1, $objProduct.Activate())
        For $objService In $colServices
                $objService.RefreshLicenseStatus()
        Next
        $objProduct.refresh_
Next


Local $sProductID = '4de7cb65-cdf1-4de9-8ae8-e3cce27b9f2c' ;产品ID
Activate($sProductID)
If Not @error Then
        MsgBox(512, '', '成功')
Else
        MsgBox(16, '', '失败')
EndIf

Func Activate($sProductID)
        Local $colServices = ObjGet("winmgmts:").ExecQuery("SELECT Version FROM SoftwareLicensingService")
        For $objProduct In ObjGet("winmgmts:").ExecQuery("SELECT ID FROM SoftwareLicensingProduct where id = '" & $sProductID & "'")
                $objProduct.Activate()
                For $objService In $colServices
                        $objService.RefreshLicenseStatus()
                Next
                $objProduct.refresh_
                Return True
        Next
        Return SetError(1, 0, False)
EndFunc   ;==>Activate



出现了一个很奇怪的问题,上面两段代码是一回事。但是把他俩放到一个.au3里面执行。。结果失败。如果单独执行一段代码,就成功。

此外,下面这两行,如果把其中的ObjGet("winmgmts:"),事先用变量声明。Local $owinmgmts = ObjGet("winmgmts:"),也会执行失败。。好奇怪
Local $colServices = ObjGet("winmgmts:").ExecQuery("SELECT Version FROM SoftwareLicensingService")
For $objProduct In ObjGet("winmgmts:").ExecQuery("SELECT ID FROM SoftwareLicensingProduct where id = '" & $sProductID & "'")





您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-16 19:22 , Processed in 0.072150 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表