Команда командной строки (cmd) для блокировки компьютера с Windows


64

Есть ли способ заблокировать компьютер с Windows XP через командную строку? У shutdownкоманды нет опции для этого.


1
В сеансе удаленного рабочего стола вы сможете использовать <kbd> CTRL </ kbd> + <kbd> ALT </ kbd> + <kbd> END </ kbd>, чтобы показать экран безопасности Windows (где вы можете заблокировать рабочая станция, перезагрузка и т. д.). В Vista или выше вы также можете выбрать «Безопасность Windows» в меню «Пуск». ! Пункт меню безопасности Windows
bobbymcr

Ответы:


95
rundll32.exe user32.dll,LockWorkStation

Меня предупредили, что это не рекомендуется (кроме Microsoft ). Предупреждения также сосредоточены вокруг близкого родственника команды, ExitWindowsEx (который выключает компьютер). У меня никогда не было проблем с этим, но YMMV .

Шлумп : пудель-обезьяна может быть права. Легенда предупреждает, что код мощный и опасный.
Нудар : Боже мой. Нам лучше использовать его только три или четыре раза. Шесть, макс.
Нибблер : Но даже одно использование может разрушить вселенную!
Нудар : Понял. Два или три раза.

( Источник )


3
Некоторое время у меня была веб-страница на моем компьютере, которая при посещении вызывала бы эту команду (на моем компьютере, а не на посетителях). В основном это была удаленная блокировка для моего компьютера, потому что когда я забываю заблокировать его, когда выхожу из дома, и понимаю, что мой брат посещает.
Грант

2
Вызывать такие функции с помощью rundll32 действительно не рекомендуется. Для получения дополнительной информации см. Blogs.msdn.com/oldnewthing/archive/2004/01/15/58973.aspx - прокрутите немного вниз до раздела «rundll32».
Гравитация

У меня никогда не было проблем с этим, и он все еще работает в Windows 7 (можно предположить, что это не было достаточно проблематично исправить). В любом случае, это единственная опция командной строки для блокировки компьютера (не считая установки программы, которая сделает это за вас).
Грант

2
Но почему это не рекомендуется?
эндолит

1
Я признаю, что это более старый вопрос, но я только что обнаружил, что в Microsoft есть статья, в которой описывается использование rundll32, поэтому этот метод рекомендуется: docs.microsoft.com/en-us/powershell/scripting/getting- началось /…
Аакаш Шах

11

Если у вас есть доступ к компилятору Visual Studio C ++, вот (чрезвычайно сложный) источник:

//
//LockWorkStation.cpp
//
//Locks the console.
//
//To compile (VC++ 2003, on one line):
//
//      cl.exe /W4 LockWorkStation.cpp /link /RELEASE /OPT:REF /OPT:NOWIN98
//                  /ENTRY:mainStartup /SUBSYSTEM:CONSOLE kernel32.lib
//

#if !defined(_WIN32_WINNT) || (_WIN32_WINNT < 0x0500)
    #undef _WIN32_WINNT
    #define _WIN32_WINNT 0x0500 
#endif
#include <windows.h> 

void mainStartup(void)
{
    LockWorkStation(); 
    ExitProcess(0);
}

Я скомпилировал это с VS2015 с помощью этой команды:cmd /s /c ""C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 & cl.exe /W4 LockWorkStation.cpp /link /RELEASE /ENTRY:mainStartup /SUBSYSTEM:CONSOLE kernel32.lib user32.lib"
Кевин Смит

6

Обратите внимание, что в Windows Vista / 7 вы можете использовать команду tsdisconдля отключения сеанса удаленного рабочего стола / блокировки вашей рабочей станции.

Если вы используете rundll32.exe user32.dll, LockWorkStationкоманду в сеансе удаленного рабочего стола (в Windows 7 / Vista), сеанс будет продолжен, но вы увидите только экран блокировки в окне удаленного рабочего стола.


TSDISCON был представлен в Windows 2000, только что проверил, и он также доступен в Windows XP.
Йерун Wiert Pluimers

2
Не используйте rundll32.exe с LockWorkStation , это будет портить стек вызовов и оставит этот беспорядок в вашем сеансе.
Йерун Wiert Pluimers

2

Поскольку не рекомендуется запускать LockWorkStation через rundll32.exe, другим решением является использование Wizmo . Просто беги:

wizmo lock

2

Для запуска в планировщике или после того, как через несколько минут вы покинули компьютер, вы можете использовать timeout /t 36000 /nobreak & rundll32.exe user32.dll,LockWorkStation создание .batфайла, поместить его в запланированное задание, поставить триггер на холостой ход.

Вы можете изменить /t xxx. сколько вам нужно ждать.

Благодаря Кевину он использовал команду для выключения, вот так: timeout /t 36000 /nobreak & shutdown /h /f


Чтобы не разочаровываться, если вы не получили ответ, вы должны знать, что ответили на вопрос, на который есть принятый ответ и которому 5 лет. Вы не сделали ничего плохого. Просто хотел, чтобы ты знал.
CharlieRB

1

Вот рабочая команда bat для удаленного ПК

@echo off
COLOR 3E
@echo Lock Remote PC
SET /P PC=ıp or Host Name: 
\\%PC%\c$\Windows\System32\rundll32.exe user32.dll,LockWorkStation

1

Я установил на компьютере автоматический вход в систему, сразу же запустил «rundll32.exe user32.dll, LockWorkStation», а затем начал загружать приложения (один файл .CMD в папке автозагрузки).

Работает красиво. Когда мне нужно перезагрузить компьютер, и я нахожусь в критическом состоянии, я перезагружаю компьютер, делаю перерыв и т. Д., А когда возвращаюсь, я разблокирую свой компьютер. Приложения все загружены.


-3

Вы также можете сделать это с локального компьютера, чтобы заблокировать удаленную рабочую станцию, используя путь UNC:

\\computername\c$\Windows\System32\rundll32.exe user32.dll,LockWorkStation

Получение доступа запрещено с рабочих станций Windows 7, но работает с Windows XP.


3
Это просто запустит двоичный файл rundll32.exe на локальной рабочей станции с диска удаленной рабочей станции, а затем заблокирует локальную рабочую станцию.
HJD

1
Это блокирует машину, на которой он работает
G-.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.