1

В Windows XP я создал запланированную задачу для запуска каждые 15 минут, и она работает отлично. Но я не хочу, чтобы задача запускалась, когда компьютер заблокирован - Ctrl Alt Del.

Есть ли способ предотвратить запуск запланированной задачи, когда система заблокирована?

2 ответа2

0

См. Win32_LogonSession Класс Win32_LogonSession, LogonType.

Logntype.cmd:

@ECHO OFF
@FOR /F "tokens=4 delims==" %%L IN ('wmic path win32_loggedonuser^|find /I "%username%"') do @SET /A LogonId=%%L
@echo LogonId=%LogonId%
@FOR /F %%T IN ('wmic path win32_logonsession Where ^(LogonId^=%LogonId%^) get LogonType^|more /E +1') do @SET /A LogonType=%%T &GOTO SkipLineLogonType
@:SkipLineLogonType
@echo LogonType=%LogonType%

@IF %LogonType% EQU 2  (
       @ECHO Interactive
       :: Interactive Code!
      ) ELSE (

       @ECHO Your Code!
       :: not interactive logon
      )

Случай эмуляции:

   @IF %LogonType% EQU 2  (
       @ECHO Interactive
       @ECHO Interactive Code!

   )

   @IF %LogonType% EQU 7  (
       @ECHO Interactive
       @ECHO Interactive Code!

   )

Числовое значение, указывающее тип сеанса входа в систему:

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: LogonType :
::
:: Value  Meaning 
::
:: 0 Used only by the System account.
:: 
::   Interactive
:: 2 Intended for users who are interactively using the machine, such as a user being logged on by a terminal server, remote shell, or similar process.
::    
::   Network
:: 3 Intended for high-performance servers to authenticate clear text passwords. LogonUser does not cache credentials for this logon type.
::  
::   Batch
:: 4 Intended for batch servers, where processes can be executed on behalf of a user without their direct intervention; or for higher performance servers that process many clear-text authentication attempts at a time, such as mail or web servers. LogonUser does not cache credentials for this logon type.
::  
::   Service
:: 5 Indicates a service-type logon. The account provided must have the service privilege enabled.
::  
::   Proxy
:: 6 Indicates a proxy-type logon.
::  
::   Unlock
:: 7 This logon type is intended for GINA DLLs logging on users who are interactively using the machine. This logon type allows a unique audit record to be generated that shows when the workstation was unlocked. 
::  
::   NetworkCleartext
:: 8 Windows Server 2003, Windows 2000, and Windows XP:  Preserves the name and password in the authentication packages, allowing the server to make connections to other network servers while impersonating the client. This allows a server to accept clear text credentials from a client, call LogonUser, verify that the user can access the system across the network, and still communicate with other servers. 
:: 
::   NewCredentials
:: 9 Windows Server 2003, Windows 2000, and Windows XP:  Allows the caller to clone its current token and specify new credentials for outbound connections. The new logon session has the same local identify, but uses different credentials for other network connections. 
:: 
::    RemoteInteractive
:: 10 Terminal Services session that is both remote and interactive.
::  
::    CachedInteractive
:: 11 Attempt cached credentials without accessing the network.
::  
::    CachedRemoteInteractive
:: 12 Same as RemoteInteractive. This is used for internal auditing.
::  
::    CachedUnlock
:: 13 Workstation logon.
:: 
0

Быстрое и грязное решение:

Найдите надлежащим образом защищенную папку, в которой можно создать "файл блокировки рабочей станции", для которого другие файлы .bat могут проверить существование.

Создайте файл createLockFile.bat в этой папке, содержащий следующий код:

@echo off
@echo "" > WORKSTATION_IS_LOCKED

Создайте другой файл deleteLockFile.bat в этой папке, содержащий следующий код:

@echo off
del WORKSTATION_IS_LOCKED 2>nul

Создайте задачу, которая запускается при блокировке рабочей станции для запуска createLockFile.bat и другую задачу, которая запускается при разблокировке рабочей станции для запуска deleteLockFile.bat . Убедитесь, что в поле Start in: указано значение пути к папке.

Теперь вы можете использовать следующий код в верхней части любого запланированного BAT-файла, чтобы выйти раньше, если рабочая станция заблокирована:

if exist "<containing folder path>\WORKSTATION_IS_LOCKED" (
    exit /b
)

Смотрите здесь, чтобы позволить файлам .bat исполняться "невидимо" (т.е. без краткого отображения окна)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .