Инструмент удаленного выхода - PullRequest
0 голосов
/ 07 июня 2018

Я пишу инструмент для удаленного выхода из школы, в которой я учусь.Как системные администраторы, мы используем его для выхода из системы после закрытия наших лабораторий на кампусе, чтобы гарантировать, что все компьютеры будут получать обновления ночью.С Windows 7 инструмент, который у нас есть, теперь работает нормально.Но мы обновляем Windows 10 для всех наших машин, и инструмент загадочным образом перестал работать.Он написан на VB.net на данный момент (открыт для изменения в c #, если необходимо).В настоящее время у нас есть 2 основные функции для программы:

Private Sub LogOut()

    Dim AdminAccount As String = txtUsr.Text
    Dim AdminDomain As String = txtDomain.Text
    Dim AdminPassword As String = txtPwd.Text
    Dim ShutDownLocal As String = "c:\bin\"
    Dim LogOutProgram As String = "c:\bin\Logout.cmd"
    Dim TargetMachine As String = cboDom.Text & ComboBox1.Text & "p" & txtMachine.Text & txtDomain.Text
    Dim ShutDownCommand As String = "shutdown -t 300 /r /m \\" & TargetMachine
    If RunAs.RunAs(AdminAccount, AdminPassword, AdminDomain, ShutDownCommand, ShutDownLocal) Then
        Status.Text = "5 Minute Logout sent to machine"
    End If
End Sub

и

Public Shared Function RunAs(ByVal UserName As String, _
                                ByVal Password As String, _
                                ByVal DomainName As String, _
                                ByVal CommandLine As String, _
                                ByVal StartIn As String) As Boolean

    Dim iRet As Integer
    Dim si As New STARTUPINFO
    Dim pi As PROCESS_INFORMATION



    si.cb = Marshal.SizeOf(si)
    si.wShowWindow = 0

    iRet = CreateProcessWithLogonW(UserName, DomainName, Password, _
        LOGON_WITH_PROFILE, Nothing, CommandLine, _
        NORMAL_PRIORITY_CLASS, 0, StartIn, si, pi)

    If iRet = 0 Then
        MessageBox.Show("Password incorrect.", "Error")
        Return False
    Else
        CloseHandle(pi.hThread)
        CloseHandle(pi.hProcess)
        Return True
    End If

End Function

В настоящее время это работает абсолютно нормально на машинах с Windows 7, но при попытке его на машинах с Windows 10 мы либо получаем "доступ запрещен (5) "или" Введенное имя компьютера недопустимо или удаленное отключение не поддерживается на целевом компьютере. Проверьте имя и повторите попытку или обратитесь к системному администратору. (53) "

IУже проверил с администратором и он сказал что он включен.Мы используем брандмауэр уровня домена, чтобы отдельные компьютеры не отклоняли соединение.На каждой машине есть одинаковые группы администраторов (которые я использую для каждой попытки).Я не уверен в каких-либо других решениях для изучения.Извините за стену текста, любые решения могут быть проверены по большей части.К сожалению, нет стороннего программного обеспечения.

Спасибо!

...