1

この2つのコードを使用している同じユーザーの複数のタスクを強制終了するにはどうすればよいですか

コード番号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

Code no2 (このファイル名はSwitch.bat)

@echo off

TASKKILL /F /IM Explorer.exe

exit

実際には、これを作成するための背後にある一般的なアイデアは、ログオフせずにwin 7のようにwin XPで切り替えます
問題は、元のプロファイルに戻すと、2番目のユーザーのすべてのタスクが停止しないことです

実行中の特定のユーザーのすべてのタスクを停止する方法はありますか

4

2 に答える 2

0

次のように、特定のユーザーのすべてのプロセスを強制終了できます (管理者権限がある場合)。

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

次のようにスクリプトを実行します。

C:\>script.cmd joe

ただし、元に戻すのではなく、単純に 2 番目のユーザーをログオフしてみませんか? それは明らかな(そしてはるかにクリーンな)解決策です。管理者として、コマンドラインで他のユーザーをログオフすることもできます:

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 に答える
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 に答える