Wiersz polecenia (cmd) do zablokowania komputera z systemem Windows


64

Czy istnieje sposób na zablokowanie komputera z systemem Windows XP za pomocą wiersza polecenia? shutdownKomenda nie ma opcji dla niego.


1
W sesji pulpitu zdalnego powinieneś móc użyć <kbd> CTRL </kbd> + <kbd> ALT </kbd> + <kbd> END </kbd>, aby wyświetlić ekran Zabezpieczeń Windows (gdzie możesz zablokować stacja robocza, restart itp.). W systemie Vista lub nowszym możesz również wybrać „Zabezpieczenia systemu Windows” z menu Start. ! Element menu Zabezpieczenia systemu Windows
— bobbymcr

Odpowiedzi:


95
rundll32.exe user32.dll,LockWorkStation

Ostrzeżono mnie, że nie jest to zalecane (z wyjątkiem firmy Microsoft ). Ostrzeżenia są również wyśrodkowane wokół bliskiego krewnego polecenia, ExitWindowsEx (który wyłącza komputer). Nigdy nie miałem z tym żadnych problemów, ale YMMV .

Schlump : pudel-małpa może mieć rację. Legenda ostrzega, że ​​kod jest potężny i niebezpieczny.
Nudar : Mój Boże. Lepiej używajmy go tylko trzy lub cztery razy. Sześć, maks.
Nibbler : Ale nawet pojedyncze użycie może zniszczyć wszechświat!
Nudar : Rozumiem. Parękroć.

( Źródło )


3
Przez pewien czas miałem na swoim komputerze stronę internetową, która po odwiedzeniu wywołałaby to polecenie (na moim komputerze, a nie odwiedzających). Była to w zasadzie zdalna blokada dla mojego komputera, ponieważ kiedy zapomnę ją zamknąć, kiedy wychodzę z domu i zdaję sobie sprawę, że mój brat odwiedza.
— Grant

2
Wywołanie takich funkcji za pomocą rundll32 nie jest naprawdę zalecane. Aby uzyskać więcej informacji, zobacz blogs.msdn.com/oldnewthing/archive/2004/01/15/58973.aspx - przewiń nieco w dół do sekcji „rundll32”.
— grawity

Nigdy nie miałem z tym problemu i nadal działa w systemie Windows 7 (można założyć, że to nie było wystarczająco problematyczne do naprawienia). Tak czy inaczej, nadal jest to jedyna opcja wiersza poleceń blokująca komputer (bez instalowania programu, który zrobi to za Ciebie).
— Grant

2
Ale dlaczego nie jest to zalecane?
— endolith

1
Rozumiem, że to starsze pytanie, ale właśnie odkryłem, że Microsoft ma artykuł dokumentujący użycie rundll32, więc wydaje się, że jest to zalecana metoda: docs.microsoft.com/en-us/powershell/scripting/getting- rozpoczęty /…
— Aakash Shah

11

Jeśli masz dostęp do kompilatora C ++ Visual Studio, oto (bardzo skomplikowane) źródło:

//
//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);
}

Skompilowałem to z VS2015 przy użyciu tego polecenia: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"
— Kevin Smyth,

6

Zauważ, że w Windows Vista / 7 możesz użyć tego polecenia, tsdisconaby rozłączyć sesję Pulpitu zdalnego / zablokować stację roboczą.

Jeśli użyjesz rundll32.exe user32.dll, LockWorkStationpolecenia w sesji pulpitu zdalnego (w systemie Windows 7 / Vista), sesja będzie kontynuowana, ale zobaczysz tylko ekran blokady w oknie pulpitu zdalnego.


TSDISCON został wprowadzony w Windows 2000 właśnie sprawdzony i jest również dostępny w Windows XP.
— Jeroen Wiert Pluimers

2
Nie używaj rundll32.exe z LockWorkStation , to zadziała ze stosem wywołań i pozostawi ten bałagan w sesji.
— Jeroen Wiert Pluimers

2

Ponieważ nie jest zalecane uruchamianie LockWorkStation przez rundll32.exe, innym rozwiązaniem jest użycie Wizmo . Po prostu biegnij:

wizmo lock

2

Aby uruchomić program planujący lub po kilku minutach odejścia z komputera, możesz użyć timeout /t 36000 /nobreak & rundll32.exe user32.dll,LockWorkStation utworzyć .batplik, umieścić go w zaplanowanym zadaniu, uruchomić wyzwalacz w trybie bezczynności.

Można zmienić /t xxx. ile trzeba czekać.

Dzięki Kevinowi użył polecenia do zamknięcia, czyli: timeout /t 36000 /nobreak & shutdown /h /f


Abyś nie był rozczarowany, jeśli nie otrzymasz odpowiedzi, powinieneś wiedzieć, że odpowiedziałeś na pytanie, które ma zaakceptowaną odpowiedź i ma 5 lat. Nie zrobiłeś nic złego. Chciałem tylko, żebyś wiedział.
— CharlieRB,

1

Oto działające polecenie bat dla zdalnego komputera

@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

Ustawiam komputer na automatyczne logowanie, natychmiast uruchamiam „rundll32.exe user32.dll, LockWorkStation”, a następnie zaczynam ładować aplikacje (pojedynczy plik .CMD w moim folderze startowym).

Działa ładnie. Kiedy muszę zrestartować komputer i jestem w punkcie krytycznym, ponownie uruchamiam komputer, robię sobie przerwę itp. Po powrocie odblokowuję komputer. Wszystkie aplikacje zostały załadowane.


-3

Możesz to również zrobić z komputera lokalnego, aby zablokować zdalną stację roboczą, używając ścieżki UNC:

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

Odmowa dostępu dla stacji roboczych z systemem Windows 7, ale działa z systemem Windows XP.


3
Spowoduje to uruchomienie pliku binarnego rundll32.exe na lokalnej stacji roboczej z dysku zdalnej stacji roboczej, a następnie zablokowanie lokalnej stacji roboczej.
— hjd

1
To blokuje maszynę, na której działa
— G-.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.