сценарий принудительного выхода пользователя для Windows 7

есть ли способ заставить другого пользователя выйти из системы через командную строку в Windows 7 Home Premium?

моя работа VPN политика требует, чтобы там быть только 1 пользователь вошел в систему, чтобы войти других пользователей я должен запустить командную строку от имени администратора, запустите Диспетчер задач, а затем щелкните правой кнопкой мыши и выйти из них. Это немного раздражает. В идеале я хотел бы, чтобы исполняемый или пакетный скрипт выполнял все это за один быстрый шаг. Я наткнулся на пару потоков, говорящих о регистрации пользователи отключаются после заданного тайм-аута, и это может работать нормально (при условии, что есть какие - либо, которые работают...мои выводы заключаются в том, что их нет), но я все равно хотел бы знать, как это сделать за один шаг, если это возможно.

есть ли способ сделать то, что я прошу?

Я не против написания приложения .net, если я должен, а также.

22
задан studiohack
19.12.2022 3:48 Количество просмотров материала 3134
Распечатать страницу

4 ответа

можно автоматизировать выхода команды, используя что-то вроде этого пакетный файл (взято из здесь):

@echo off
query session > c:\temp\session.txt
for /f "skip=2 tokens=2,3,4" %%i in (c:\temp\session.txt) DO if not "%%i"=="Geoff" logoff %%j
del c:\temp\session.txt
pause

использует сессия запрос команда, чтобы получить список сессий, то на команда для разбора вывода, и, наконец,logoff команда для выхода из системы других пользователей. Вы захотите запустить query session команда для проверки выходных данных на вашем компьютере.

на моей машине, я get:

C:\Users\Geoff\Desktop>query session
 SESSIONNAME       USERNAME                 ID  STATE   TYPE        DEVICE
 services                                    0  Disc
>console           Geoff                     1  Active

первые две строки-мусор, поэтому skip 2 часть игнорирует их. Имя пользователя, идентификатор и состояние вводятся в переменные i, j и k соответственно. Вы хотите, чтобы проверить его, и если он не будет работать в качестве пользователя без прав администратора, то вы можете либо щелкните правой кнопкой мыши файл на рабочем столе и "запуск от имени администратора", или вы можете создать ярлык для пакетного файла, а затем выберите Свойства | ярлык | дополнительно | Запуск от имени администратора. В любом случае вы получите UAC проворный. Наконец, если вы хотите запустить пакетный файл без запроса контроля учетных записей, можно перейти к более неясному маршруту планировщика заданий: см. этот пост.

4
отвечен Geoff 2022-12-20 11:36

проверить PSShutdown от госпожи вы можете использовать его с -o возможность выйти из консоли пользователя, и сделать пакетный файл вы можете запустить одним щелчком мыши (или одним щелчком правой кнопкой мыши > Запуск от имени администратора).

PsShutdown-это утилита командной строки, аналогичная утилите shutdown из Windows 2000 Resource Kit, но с возможностью сделать многое более. В дополнение к поддерживать такие же варианты для выключать или перезагрузка локального или удаленного компьютера компьютер, PsShutdown может выход в пользователь консоли или заблокировать консоль (для блокировки требуется Windows 2000 или высший.)

также, возможно, проверьте этот вопрос:тайм-аут учетной записи Пользователя?

2
отвечен Ƭᴇcʜιᴇ007 2022-12-20 13:53

как альтернативу моей другого ответа (этот вопрос заставил меня задуматься!), вы также можете рассмотреть возможность использования комбинации двух вещей:

  1. настройка запланированной задачи на каждой рабочей станции для запуска сценария выхода из системы. Триггером будет определенная запись журнала событий.
  2. используйте a .сценарий vbs на рабочем столе для публикации записи триггера в журнале событий.

принимая их в свою очередь:

запланировано Задача

вам нужно зайти в каждого пользователя, я думаю, и добавьте новое задание с настраиваемый триггер: триггеры | новые | на мероприятие | заказ | новый фильтр | формате XML | 'вручную'. Затем используйте что-то вроде следующего для XML:

<QueryList>
  <Query Id="0" Path="Application">
    <Select Path="Application">*[System[(Level=4 or Level=0) and (EventID=4)]] and *[EventData[Data[1]='EVERYBODY_OFF']]</Select>
  </Query>
</QueryList>

, который будет искать информационные события в журнале приложений с EventID 4 (информация), а тело данных "EVERYBODY_OFF". Подробнее о триггерах событий здесь.

действие должен быть в состоянии быть так просто, как shutdown -l, который должен вызвать выход из системы (вы хотите проверить его).

Триггер Скрипт

следующий .VBS скрипт будет журнал событий 'EVERYBODY_OFF по запросу:

const EVENTLOG_INFORMATION = 4
strMessage = "EVERYBODY_OFF"
set objShell = CreateObject("WScript.Shell")
objShell.LogEvent EVENTLOG_INFORMATION, strMessage

материал для тестирования

биты я не уверен, и который займет немного тестирования:

  • это сообщение о событии, которое разносится на всю машину? То есть, будут ли все пользователи видеть задачу?
  • будет команда завершения работы выполняется правильно в контексте целевого пользователя?
1
отвечен Geoff 2022-12-20 16:10

вот интересная статья от скриптовых ребят, описывающая принудительный выход из системы по событию:

http://blogs.technet.com/b/heyscriptingguy/archive/2010/06/10/hey-scripting-guy-how-can-i-log-out-a-user-if-they-launch-a-particular-application.aspx

Предположим, вы можете использовать logon или explorer.exe запуск пользователем a в качестве триггера события для выхода пользователя B.

1
отвечен Yevgeniy 2022-12-20 18:27

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх