Команда командного рядка (cmd) для блокування машини Windows


64

Чи є спосіб заблокувати машину Windows XP за допомогою командного рядка? У shutdownкоманди немає опції для неї.


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

Відповіді:


95
rundll32.exe user32.dll,LockWorkStation

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

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

( Джерело )


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

2
Викликати такі функції за допомогою rundll32 дійсно не рекомендується. Для отримання додаткової інформації див. Blogs.msdn.com/oldnewthing/archive/2004/01/15/58973.aspx - прокрутіть трохи вниз до розділу "rundll32".
grawity

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

2
Але чому це не рекомендується?
ендоліт

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

11

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

//
//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.
Єроен Вірт Плюймерс

2
Не використовуйте rundll32.exe з LockWorkStation , він зіпсує стек викликів і залишить цей безлад у вашому сеансі.
Jeroen 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.