我正在使用AutoIT(& VBS)腳本將PC從Windows(7)鎖定屏幕加入域。我用我的腳本替換了system32文件夾中的Utilman.exe。當在Windows鎖定屏幕上點擊訪問方便按鈕時,我的Autoit GUI會出現並顯示IP,PC名稱,併爲最終用戶提供一些自助按鈕。AutoIT&VBS - 從Windows鎖定屏幕將PC添加到域
我的GUI上的其中一個按鈕調用一個函數,將PC重新加入域,使其脫離域。我的問題是,從鎖定屏幕,加入域按鈕運行,但不會將PC加入域。即使重新啓動後。如果我登錄到管理員帳戶並單擊相同的加入域按鈕,則PC將被添加到域中而不會出現問題。這讓我頗爲困惑,因爲我的腳本作爲SYSTEM用戶從鎖定屏幕運行。有關此問題的任何意見和建議非常感謝!
用於將PC與域聯合的函數如下。它的工作原理,當登錄到管理員帳戶,但PC不會加入從Windows鎖屏
編輯域:域腳本來自這個例子: http://www.vbsedit.com/scripts/ad/computer/scr_5.asp
這個想法從運行腳本鎖屏來自下面的例子。香港專業教育學院取代Utilman.exe與我的腳本,命名我的腳本Utilman.exe並把它放在system32文件夾 https://www.technibble.com/bypass-windows-logons-utilman/
Func joinDomain()
$file = FileOpen("C:\IT\joinDomain.vbs", 1)
FileWriteLine($file, 'Const JOIN_DOMAIN = 1')
FileWriteLine($file, 'Const ACCT_CREATE = 2')
FileWriteLine($file, 'Const ACCT_DELETE = 4')
FileWriteLine($file, 'Const WIN9X_UPGRADE = 16')
FileWriteLine($file, 'Const DOMAIN_JOIN_IF_JOINED = 32')
FileWriteLine($file, 'Const JOIN_UNSECURE = 64')
FileWriteLine($file, 'Const MACHINE_PASSWORD_PASSED = 128')
FileWriteLine($file, 'Const DEFERRED_SPN_SET = 256')
FileWriteLine($file, 'Const INSTALL_INVOCATION = 262144')
FileWriteLine($file, ' ')
FileWriteLine($file, 'strDomain = "Domain.net"')
FileWriteLine($file, 'strPassword = "joinDomainPassword"')
FileWriteLine($file, 'strUser = "SDSUser"')
FileWriteLine($file, ' ')
FileWriteLine($file, 'Set objNetwork = CreateObject("WScript.Network")')
FileWriteLine($file, ' strComputer = objNetwork.ComputerName')
FileWriteLine($file, ' ')
FileWriteLine($file, 'Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" & _')
FileWriteLine($file, ' strComputer & "\root\cimv2:Win32_ComputerSystem.Name=''" & _ ')
FileWriteLine($file, ' strComputer & "''") ')
FileWriteLine($file, ' ')
FileWriteLine($file, 'ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain, _')
FileWriteLine($file, ' strPassword, strDomain & "\" & strUser, NULL, _')
FileWriteLine($file, ' JOIN_DOMAIN + ACCT_CREATE)')
FileClose($file)
Sleep(100)
RunWait(@ComSpec & " /c " & 'wscript.exe C:\IT\joinDomain.vbs', @SystemDir, @SW_HIDE)
sleep(1000)
FileDelete("C:\IT\joinDomain.vbs")
messageBox()
EndFunc
這裏是上面的VBS腳本的一個完整的AutoIt版本。當以管理員身份登錄時它工作正常,但當我從Windows鎖定屏幕撥打 相同的功能時,出現錯誤2717。
Const $JOIN_DOMAIN = 1
Const $ACCT_CREATE = 2
Const $ACCT_DELETE = 4
Const $WIN9X_UPGRADE = 16
Const $DOMAIN_JOIN_IF_JOINED = 32
Const $JOIN_UNSECURE = 64
Const $MACHINE_PASSWORD_PASSED = 128
Const $DEFERRED_SPN_SET = 256
Const $INSTALL_INVOCATION = 262144
Const $DOMAIN = "Domain.net"
Const $ADMINKENNWORT = "Password"
Const $ADMIN = "SDUser"
Const $COMPUTER = @ComputerName
$objComputer = ObjGet("winmgmts:{impersonationLevel=Impersonate}!\\" & $COMPUTER & "\root\cimv2:Win32_ComputerSystem.Name='" & $COMPUTER & "'")
$Result = $objComputer.JoinDomainOrWorkGroup($DOMAIN, $ADMINKENNWORT, $DOMAIN & "\" & $ADMIN, "", $JOIN_DOMAIN + $ACCT_CREATE)
If ($Result <> 0) Then
MsgBox(0, "Error Joining the Domain", $COMPUTER & " Error code: " & $Result)
EndIf
這是上面的VBS腳本的完整AutoIT版本。它以管理員身份登錄時工作正常,但當我從Windows鎖定屏幕調用相同功能時,出現錯誤2717。 – Duck