如何從 Windows 電腦自動登出使用者?

如何從 Windows 電腦自動登出使用者?

我想確保人們在一台特定的多用戶電腦上完成工作後就可以註銷。目前,下一個用戶只需「切換用戶」並繼續工作,但在打開程式的情況下同時登入許多用戶似乎會耗盡資源。

如果使用者 24 小時沒有活動,是否可以自動從電腦登出?


或者,是否可以在午夜註銷除當前用戶之外的所有人?

該電腦位於 Windows 網域網路上 - 儘管我只希望自動登出適用於單一電腦(而且我不是網路管理員)

答案1

為了在保持當前用戶連接的同時註銷已斷開連接的用戶,請將以下腳本代碼複製到 .cmd 文件(例如“LogOffUsers.cmd”)中,然後在午夜將其作為服務運行:

@echo off
for /f "tokens=1-7 delims=,: " %%a in ('query user ^| find /i "disc"') do logoff %%b

該腳本的工作原理是使用查詢命令透過搜尋短語“disc”來尋找已斷開連接的用戶,然後將其登出。

如果您希望腳本作為服務連續運行,在用戶斷開連接/不活動一段時間後登出用戶,您可以使用:

@echo off
:Top
for /f "tokens=1-7 delims=,: " %%a in ('query user ^| find /i "disc"') do if %%d GTR 32 (logoff %%b) else %%e GTR 32 (logoff %%b)
choice /T 120 /C 1 /D 1 /N
goto top

此腳本使用相同的查詢命令,但另外檢查結果的「IDLE TIME」部分,如果空閒時間大於 32 (“GTR 32”),則登出使用者。該短語出現兩次,因為“IDLE TIME”標記可能出現在兩個略有不同的位置。然後以「choice」開頭的行等待 2 分鐘,然後循環到開頭再次執行操作。您可以根據需要增加或減少“32”值。

成立這裡

答案2

for /f "tokens=1-7 delims=,: " %%a in ('query user ^| find /i "disc"') do if %%d GTR 32 (logoff %%b) else (if %%e GTR 35 (logoff %%b))

請注意,上述內容僅適用於空閒時間,如果您想在註銷斷開連接的會話之前使用數小時的空閒時間,則需要對其進行輕微修改。

for /f "tokens=1-8 delims=,:/ " %%a in ('query user ^| find /i "disc"') do if %%d GTR 23 (if %%h GTR 2012 (logoff %%b))

更改23來調整時間,以上將在24小時或更長的空閒時間上工作。 %%h 2012 確保 %%d 值是小時而不是分鐘值。

答案3

我會尋找一種方法來停用“切換用戶”功能。可能有幫助。

相關內容