0
0

安装网络路径的软件,安装不了,求助各位大神

Au3编程学习2023-05-22 14:48广东
2480
目的:1、我想写一个脚本,发给用户安装软件,局域网的。他们安装的时候,会获取网络路径的安装包“\\192.168.5.25\wadee\setup”,也就是我的电脑,这样有版本更新的时候,我只需更新我电脑的安装包即可。现在我写了这些代码,运行不了,代码发出来,求助一下各位大神帮一下。
2、另外,我的环境是域环境,域用户都没有安装权限,所以需要用户电脑的本地管理员安装,本地管理员有两个,“admin”和“administrator”要判断哪个是禁用,哪个是启用状态,再去调用。现在遇到的问题:点击安装没有反应,就算有反应也提示没有权限安装(因为域用户没有权限)

代码如下:#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
;#include <RadioConstants.au3>


;获取管理员账户状态
$adminStatus = _IsUserAccountDisabled("admin")
$administratorStatus = _IsUserAccountDisabled("administrator")

;Global Const $GUI_SS_DEFAULT_RADIO = 0
;Global Const $GUI_SS_RADIOCHECK = 1
;Global Const $GUI_SS_BLACKRECT = 2
;Global Const $GUI_SS_GRAYRECT = 3
;Global Const $GUI_SS_WHITERECT = 4
;Global Const $GUI_SS_BLACKFRAME = 5
;Global Const $GUI_SS_GRAYFRAME = 6
;libpng warning: iCCP: cHRM chunk does not match sRGB
Global Const $GUI_SS_WHITEFRAME = 7


; 创建 GUI
Global $hGUI = GUICreate("自动安装软件", 300, 200)

; 添加单选框
Global $hRadioDingDing = GUICtrlCreateRadio("钉钉", 10, 10, 100, 20)
Global $hRadioQYWX = GUICtrlCreateRadio("企业微信", 10, 40, 100, 20)
Global $hRadioQQQD = GUICtrlCreateRadio("腾讯企点", 10, 70, 100, 20)
Global $hRadioEmail = GUICtrlCreateRadio("邮箱", 10, 100, 100, 20)

; 添加按钮
Global $hBtnInstall = GUICtrlCreateButton("安装", 170, 10, 100, 30)
Global $hBtnCancel = GUICtrlCreateButton("取消", 170, 50, 100, 30)
Global $hBtnAbout = GUICtrlCreateButton("关于", 170, 90, 100, 30)

; 显示 GUI
GUISetState(@SW_SHOW, $hGUI)

; 消息循环
While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE, $hBtnCancel
            Exit
        Case $hBtnInstall
            InstallSoftware()
        Case $hBtnAbout
            MsgBox($MB_SYSTEMMODAL, "关于", "软件解释权归属于信息中心")
    EndSwitch
WEnd


Func InstallSoftware()


    ; 获取所选软件的安装包路径
    Local $sSetupPath = "\\192.168.5.25\wadee\setup"
    Local $sInstaller = ""
    If GUICtrlRead($hRadioDingDing) = 1 Then
        $sInstaller = $sSetupPath & "\DingDingSetup.exe"
    ElseIf GUICtrlRead($hRadioQYWX) = 1 Then
        $sInstaller = $sSetupPath & "\QYWXSetup.exe"
    ElseIf GUICtrlRead($hRadioQQQD) = 1 Then
        $sInstaller = $sSetupPath & "\QQQDSetup.exe"
    ElseIf GUICtrlRead($hRadioEmail) = 1 Then
        $sInstaller = $sSetupPath & "\EmailSetup.exe"
    Else
        MsgBox($MB_ICONERROR, "错误", "请选择要安装的软件")
        Return
    EndIf

    ; 以管理员身份运行安装程序
        If $administratorStatus = "Enabled" Then
                RunAs("admin", @ComputerName, "123456", 0, $sInstaller, @SystemDir)
        ElseIf $adminStatus = "Enabled" Then
                RunAs("administrator", @ComputerName, "123456", 0, $sInstaller, @SystemDir)
        EndIf
EndFunc





Func _IsUserAccountDisabled($sUsername)
        ;这行代码定义了一个函数_IsUserAccountDisabled,用于获取指定账户的状态。函数的参数为$sUsername,表示要获取状态的账户名。
    $objWMIService = ObjGet("winmgmts:\\.\root\cimv2")
        ;这行代码使用ObjGet函数获取WMI服务对象,用于后面查询Win32_UserAccount类。
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_UserAccount WHERE Name='" & $sUsername & "'")
        ;这行代码使用ExecQuery方法查询Win32_UserAccount类,获取指定账户名的账户信息。
    For $objItem In $colItems
        If $objItem.Disabled = False Then
            Return "Enabled"
        Else
            Return "Disabled"
        EndIf
    Next
        ;这段代码使用For...Next循环遍历$colItems中的每个账户信息,判断账户是否被禁用。如果账户未被禁用,则返回Enabled;否则返回Disabled。
EndFunc
全部回复 0
waldfu

主题: 2

回复: 3

关注: 0

粉丝: 1

TA 的积分
  • 192
  • 1
  • 0