1

我怎样才能杀死我们正在使用这两个代码的同一用户的多个任务

代码 1

@ECHO OFF

TASKKILL /F /IM explorer.exe
cls
Echo "Please Specify the User ID"

Set /p u=
set USER=%u%@%userdomain%


Echo "Please Specify the PASSWORD"
runas /user:%USER% Explorer.exe
cls

echo "Press any key to Switch Back to Default USer Profile"
Pause
Echo "please enter your password again for verification"
runas /user:%USER% C:\switch.bat
pause
cls
start %windir%\explorer.exe
exit

代码 2(此文件名 Switch.bat)

@echo off

TASKKILL /F /IM Explorer.exe

exit

实际上创建这个的一般想法是在win XP中像win 7一样切换而不注销
问题是当它切换回原始配置文件时,第二个用户的所有任务都不会停止

是否有任何方法可以停止正在运行的特定用户的所有任务

4

2 回答 2

0

你可以试试tskill。它可以杀死一个进程并接受用户 ID 作为参数:

杀死同一用户的资源管理器

  setlocal enabledelayedexpansion
    set exe_name=Explorer
    for /f "skip=1 tokens=1,2,3" %%S in ('query user') do (
            set "current_user=%%S"

            if "!current_user:~0,1!" EQU ">" (
                    for /f "tokens=2 delims= " %%M  in ('tasklist ^| find ^"%exe_name%^"') do (
                            tskill "%%M"    /ID:%%U
                    )

            )
    )
    endlocal
    goto :eof

对于所有其他用户:

       setlocal enabledelayedexpansion
set exe_name=Explorer
        for /f "skip=1 tokens=1,2,3" %%S in ('query user') do (
                set "current_user=%%S"

                if "!current_user:~0,1!" NEQ ">" (
                        for /f "tokens=2 delims= " %%M  in ('tasklist ^| find ^"%exe_name%^"') do (
                                tskill "%%M"    /ID:%%U
                        )

                )
        )
        endlocal
        goto :eof
于 2013-07-20T20:35:37.560 回答
0

您可以像这样杀死特定用户的所有进程(前提是您具有管理员权限):

@echo off
taskkill /fi "username eq %1" /t /f

像这样运行脚本:

C:\>script.cmd joe

但是,您为什么不简单地注销第二个用户而不是切换回来?那将是显而易见的(而且更清洁)的解决方案。作为管理员,您甚至可以在命令行上注销其他用户:

logoff session

您可以枚举会话query session(或者qwinsta如果前者不起作用):

@echo off

for /f "tokens=3" %%s in ('qwinsta ^| find /i "joe"') do (
  logoff %%s
)
于 2013-07-20T22:33:28.087 回答