Autoit - проверка подлинности пользователя общего доступа к Windows

Я пытаюсь подключиться к общему ресурсу Windows (\print), но если моя аутентификация не удалась, например, неправильное имя пользователя или пароль, как я могу перехватить эту ошибку? Проблема в том, что при выполнении сценария (exe.файл), если я ввожу неправильные учетные данные, сообщение об ошибке исходит от программы Autoit, а не сообщение, которое я хотел бы вывести (код выше), если есть какие-то проблемы с аутентификацией.

Вот пример моего кода:

Здесь я пытаюсь подключиться к серверу\распечатать с именем пользователя и паролем

$WshNetwork = ObjCreate("WScript.Network")
$WshNetwork.MapNetworkDrive("", "\\print", True, $username, $password)

Значения $username и $password заполняются из поля ввода. Итак, после этого кода я попытался поймать ошибку следующим образом:

if @error Then
    MsgBox(16, "", "Authentication error!")
EndIf

И, кстати, ошибка, которую я получил из консоли, такова:

C:\Users\user\Desktop\test.au3 (33) : ==> The requested action with this object has failed.:
$WshNetwork.MapNetworkDrive( "","\\print",True, $username, $password)
$WshNetwork.MapNetworkDrive( "","\\print",True, $username, $password)^ ERROR

Что ж, ошибка возникает, но есть ли способ отловить ошибку из кода и отправить алерт (Msgbox)?


person Luís Sardinha    schedule 24.01.2013    source источник


Ответы (1)


Посмотрите DriveMapAdd(...) в AutoIt. Или попробуйте использовать что-то вроде этого:

$USERNAME = InputBox(...)
$PASSWORD = InputBox(...)
$DRIVEINPUTBOX = InputBox(...)
$SHARE = "\\print\foldername"
$DRIVE = $DRIVEINPUTBOX & ": "

$COMMAND = "NET USE " & $DRIVE & " " & $SHARE & " /USER:" & $USERNAME & " " & $PASSWORD & " > TEMP"

RunWait(@ComSpec & " /c " & $COMMAND)

; Read the file "TEMP"
; Choose what to do
; Delete file "TEMP"
person Alex    schedule 27.12.2013