Frage

Ich muss in der Lage, jeden Benutzer aus seinem Fenster-Sitzung von einem Programm abzumelden.

Ich weiß, dass ich als admin einloggen konnte und einen Remote-Abmelde erzwingen. Gibt es eine andere Art und Weise eine Abmelde ohne Anmeldung zu erzwingen?

Das Tool als Administrator ausgeführt werden, so dass kein Problem ist, an die Remote-Abmeldung in der Lage, ohne sich anzumelden ist.

Tool ist in .NET, aber jede andere Art und Weise ist willkommen (JScript, Kommandozeilen-Tool von PInvoke zu laufen, usw.)

War es hilfreich?

Lösung

Vielleicht mit Sysinternals' PsTools , insbesondere PsShutdown ?

Andere Tipps

Schließlich fand in dieser Seite dieses Skript aus: http://www.robvanderwoude.com/ files / logoff_vbs.txt

habe ich beschlossen, es als eine Zeichenfolge innerhalb des Werkzeugs zu speichern und auf die Festplatte schreiben lassen, führen Sie es aus und löschen. Nicht besonders elegant (ja, ja, hässlich wie die Hölle), aber gut genug für heute.

' Logoff.vbs, Version 1.00
' Logoff current user on any WMI enabled computer on the network
'
' Adapted from posts by Alex Angelopoulos on www.developersdex.com
' and Michael Harris on microsoft.public.scripting.vbscript
'
' Written by Rob van der Woude
' http://www.robvanderwoude.com

' Check command line parameters
Select Case WScript.Arguments.Count
    Case 0
        ' Default is local computer if none specified
        strComputer = "."
    Case 1
        Select Case WScript.Arguments(0)
            ' "?", "-?" or "/?" invoke online help
            Case "?"
                Syntax
            Case "-?"
                Syntax
            Case "/?"
                Syntax
            Case Else
                strComputer = WScript.Arguments(0)
        End Select
    Case Else
        ' More than 1 argument is not allowed
        Syntax
End Select

' Define some constants that can be used in this script;
' logoff = 0 (no forced close of applications) or 5 (forced);
' 5 works OK in Windows 2000, but may result in power off in XP
Const EWX_LOGOFF   = 0
Const EWX_SHUTDOWN = 1
Const EWX_REBOOT   = 2
Const EWX_FORCE    = 4
Const EWX_POWEROFF = 8

' Connect to computer
Set OpSysSet = GetObject("winmgmts:{(Shutdown)}//" & strComputer & "/root/cimv2").ExecQuery("select * from Win32_OperatingSystem where Primary=true")

' Actual logoff
for each OpSys in OpSysSet
    OpSys.Win32Shutdown EWX_LOGOFF
next

' Done
WScript.Quit(0)


Sub Syntax
msg = vbCrLf & "Logoff.vbs,  Version 1.00" & vbCrLf & _
      "Logoff the current user of any WMI enabled computer on the network." & _
      vbCrLf & vbCrLf & "Usage:  CSCRIPT  LOGOFF.VBS  [ computer_name ]" & _
      vbCrLf & vbCrLf & _
      "Where:  " & Chr(34) & "computer_name" & Chr(34) & _
      "  is the name of the computer to be logged off" & vbCrLf & _
      "                         (without leading backslashes); default is " & _
      Chr(34) & "." & Chr(34) & vbCrLf & _
      "                         (the local computer)." & vbCrLf & vbCrLf & _
      "Written by Rob van der Woude" & vbCrLf & _
      "http://www.robvanderwoude.com" & vbCrLf & vbCrLf & _
      "Based on posts by Alex Angelopoulos on www.developersdex.com" & _
      vbCrLf & _
      "and Michael Harris on microsoft.public.scripting.vbscript" & vbCrLf
Wscript.Echo(msg)
Wscript.Quit(1)
End Sub

Sie können einfache Befehlszeile verwenden, gewaltsam von jedem entfernten Benutzer, wie unten

abzumelden
C:\>psexec \\remotepc shutdown /f /l
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top