Я пишу инструмент для удаленного выхода из школы, в которой я учусь.Как системные администраторы, мы используем его для выхода из системы после закрытия наших лабораторий на кампусе, чтобы гарантировать, что все компьютеры будут получать обновления ночью.С 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Уже проверил с администратором и он сказал что он включен.Мы используем брандмауэр уровня домена, чтобы отдельные компьютеры не отклоняли соединение.На каждой машине есть одинаковые группы администраторов (которые я использую для каждой попытки).Я не уверен в каких-либо других решениях для изучения.Извините за стену текста, любые решения могут быть проверены по большей части.К сожалению, нет стороннего программного обеспечения.
Спасибо!