Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AutoIT&;VBS-从Windows锁定屏幕将PC添加到域_Windows_Vbscript_Autoit - Fatal编程技术网

AutoIT&;VBS-从Windows锁定屏幕将PC添加到域

AutoIT&;VBS-从Windows锁定屏幕将PC添加到域,windows,vbscript,autoit,Windows,Vbscript,Autoit,我正在编写AutoIT(&VBS)脚本,以便从Windows(7)锁定屏幕将PC加入域。我已将system32文件夹中的Utilman.exe替换为脚本。当在Windows锁屏上单击“易于访问”按钮时,我的Autoit GUI会出现,并显示IP、PC名称,并且有一些供最终用户使用的自助按钮 我的GUI上的一个按钮调用一个函数,在pc从域中脱落后将其重新加入域。我的问题是,从锁屏上看,“加入域”按钮会运行,但不会将电脑加入域。即使在重新启动之后。如果我登录到管理员帐户并单击相同的“加入域”按钮,则

我正在编写AutoIT(&VBS)脚本,以便从Windows(7)锁定屏幕将PC加入域。我已将system32文件夹中的Utilman.exe替换为脚本。当在Windows锁屏上单击“易于访问”按钮时,我的Autoit GUI会出现,并显示IP、PC名称,并且有一些供最终用户使用的自助按钮

我的GUI上的一个按钮调用一个函数,在pc从域中脱落后将其重新加入域。我的问题是,从锁屏上看,“加入域”按钮会运行,但不会将电脑加入域。即使在重新启动之后。如果我登录到管理员帐户并单击相同的“加入域”按钮,则电脑将毫无问题地添加到域中。这让我相当困惑,因为我的脚本是作为系统用户从锁屏上运行的。在此问题上的任何意见或建议都将不胜感激

我用于将PC连接到域的功能如下所示。它在登录到管理员帐户时工作,但不会从Windows锁定屏幕将电脑加入域

编辑:域脚本来自以下示例:

从锁屏运行脚本的想法来自下面的示例。我用我的脚本替换了Utilman.exe,将我的脚本命名为Utilman.exe,并将其放在system32文件夹中


下面是上面VBS脚本的完整AutoIT版本。当以管理员身份登录时,它可以正常工作,但当我调用 Windows锁定屏幕中的相同功能

Const$JOIN\u域=1
Const$ACCT\u CREATE=2
常量$ACCT\U DELETE=4
Const$WIN9X_升级=16
Const$DOMAIN\u JOIN\u如果\u JOIN=32
Const$JOIN\u UNSECURE=64
Const$MACHINE\u PASSWORD\u PASSED=128
Const$DEFERRED\u SPN\u SET=256
Const$INSTALL\u调用=262144
Const$DOMAIN=“DOMAIN.net”
Const$adminkenwort=“密码”
Const$ADMIN=“SDUser”
Const$COMPUTER=@ComputerName
$objComputer=ObjGet(“winmgmts:{impersonationLevel=Impersonate}!\\”&$COMPUTER&“\root\cimv2:Win32\u ComputerSystem.Name=”&$COMPUTER&“”)
$Result=$objComputer.JoinDomainOrWorkGroup($DOMAIN,$adminkenwort,$DOMAIN&“\”&$ADMIN,$JOIN\u DOMAIN+$ACCT\u CREATE)
如果($Result 0),则
MsgBox(0,“加入域时出错,$COMPUTER&“错误代码:&$Result”)
恩迪夫

我想你只是遇到了配股问题。尝试将以下内容添加到脚本的顶部:

#RequireAdmin

使用wmi。下面是一个UDF

Func _SetWorkGroup($WorkGroup)
;================================
;Usage:_SetWorkGroup(WprkGroup Name)
;Make By Sanhen
;================================
Local $objNetwork, $strComputer

$objNetwork = ObjCreate("WScript.Network")
$strComputer = $objNetwork.ComputerName
$objComputer = ObjGet("winmgmts:{impersonationLevel=Impersonate}!\\" & _
        $strComputer & "\root\cimv2:Win32_ComputerSystem.Name='" _
         & $strComputer & "'")
Return $objComputer.JoinDomainOrWorkGroup($WorkGroup)
EndFunc   ;==>_SetWorkGroup

不幸的是,添加#RequireAdmin并没有解决这个问题。在登录帐户时仍然很有效,但不是从Windows锁定屏幕。当我通过@UserName在locks屏幕上拉取用户名时,它显示脚本作为系统运行。当以管理员身份登录时,它可以正常工作,但当我从Windows锁定屏幕调用相同的函数时,我收到一个错误2717。
#RequireAdmin
Func _SetWorkGroup($WorkGroup)
;================================
;Usage:_SetWorkGroup(WprkGroup Name)
;Make By Sanhen
;================================
Local $objNetwork, $strComputer

$objNetwork = ObjCreate("WScript.Network")
$strComputer = $objNetwork.ComputerName
$objComputer = ObjGet("winmgmts:{impersonationLevel=Impersonate}!\\" & _
        $strComputer & "\root\cimv2:Win32_ComputerSystem.Name='" _
         & $strComputer & "'")
Return $objComputer.JoinDomainOrWorkGroup($WorkGroup)
EndFunc   ;==>_SetWorkGroup