用于锁定 Windows 机器的命令行 (cmd) 命令

Her*_*rms 71 windows command-line

有没有办法通过命令行锁定 Windows XP 机器?该shutdown命令没有它的选项。

Gra*_*ant 107

rundll32.exe user32.dll,LockWorkStation
Run Code Online (Sandbox Code Playgroud)

有人警告我不推荐这样做(Microsoft除外)。警告也集中在命令的近亲 ExitWindowsEx(关闭计算机)。我从来没有遇到过任何问题,但是YMMV

Schlump:贵宾犬可能是对的。传说警告说,该代码功能强大且危险。
努达尔:我的天。我们最好只用三四次。六,最大。
Nibbler : 但即使是一次使用也可以粉碎宇宙!
努达尔:明白了。两三遍。

来源

  • 有一段时间我在我的电脑上有一个网页,如果访问它,会调用这个命令(在我的电脑上,而不是访问者)。它基本上是我电脑的远程锁,因为当我离开家并意识到我的兄弟正在访问时忘记锁它。 (3认同)
  • 真的不推荐使用rundll32调用这样的函数。有关详细信息,请参阅 http://blogs.msdn.com/oldnewthing/archive/2004/01/15/58973.aspx -- 向下滚动到“rundll32”部分。 (3认同)
  • 但是*为什么*不推荐? (2认同)
  • @AnthonyW:[`tsdiscon`](https://technet.microsoft.com/en-us/library/bb490805.aspx)似乎注销了会话,而不是锁定它。 (2认同)

小智 15

如果您可以访问 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);
}
Run Code Online (Sandbox Code Playgroud)


pal*_*wim 6

请注意,在 Windows Vista/7 中,您可以使用该命令tsdiscon断开远程桌面会话/锁定您的工作站。

如果您rundll32.exe user32.dll, LockWorkStation在远程桌面会话(在 Windows 7/Vista 中)中使用该命令,会话将继续,但您只会在远程桌面窗口中看到锁定屏幕。

  • [不要将 rundll32.exe 与 LockWorkStation 一起使用](http://blogs.msdn.com/b/oldnewthing/archive/2004/01/15/58973.aspx),它会弄乱调用堆栈,然后离开在你的会话中一团糟。 (3认同)