远程注销工具

时间:2018-06-07 17:45:24

标签: c# windows vb.net remote-access

我正在为我上学的学校写一个远程注销工具。作为系统管理员,我们在校园实验室关闭后使用它来注销用户,以确保所有计算机在晚上都能获得更新。使用Windows 7,我们现在可以正常工作。但我们正在为所有机器更新到Windows 10,并且该工具神秘地停止运行。它是在VB.net中编写的(如果需要,可以更改为c#)。目前,我们有两个主要功能:

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)“

我已经与管理员核实过,他说它已启用。我们使用域级防火墙,因此各个计算机不会拒绝连接。每台计算机都具有相同的管理员组(我每次尝试都使用凭据)。我不确定任何其他解决方案。对于文本墙感到抱歉,任何解决方案都可以在大多数情况下进行测试。不幸的是没有第三方软件。

谢谢!

0 个答案:

没有答案