命令行(cmd)命令锁定Windows计算机


64

有没有一种方法可以通过命令行锁定Windows XP计算机?该shutdown命令没有选项。


1
在远程桌面会话中,您应该能够使用<kbd> CTRL </ kbd> + <kbd> ALT </ kbd> + <kbd> END </ kbd>来显示Windows安全屏幕(您可以在其中锁定您的工作站,重启等)。在Vista或更高版本中,您也可以从“开始”菜单中选择“ Windows安全性”。!Windows安全菜单项
bobbymcr

Answers:


95
rundll32.exe user32.dll,LockWorkStation

我被警告不建议这样做(Microsoft除外)。警告也集中在命令的近亲ExitWindowsEx周围(这将关闭计算机)。我从来没有任何问题,但YMMV

舒伦普(Schlump):狮子狗可能是对的。图例警告该代码功能强大且危险。
Nudar:我的天哪。我们最好只使用三到四次。最多六个
Nibbler:但是即使是一次使用也会破坏整个宇宙!
Nudar:知道了。两到三遍。

来源


3
有一段时间,我的计算机上有一个网页,如果访问该网页,它将调用此命令(在我的计算机上,而不是访问者)。从根本上说,这是我计算机的远程锁,因为当我离开屋子并意识到我哥哥正在访问时忘记锁计算机时。
格兰特在2009年

2
确实不建议使用rundll32调用此类函数。有关更多信息,请参见blogs.msdn.com/oldnewthing/archive/2004/01/15/58973.aspx-向下滚动至“ rundll32”部分。
grawity

我从来没有遇到过问题,并且它仍然可以在Windows 7中运行(可能会认为它不足以解决问题)。无论哪种方式,它仍然是锁定计算机的唯一命令行选项(只需安装程序即可为您锁定)。
格兰特(Grant)

2
但是为什么不推荐呢?
endlith 2012年

1
我知道这是一个较旧的问题,但是我刚刚发现Microsoft有一篇文章记录了rundll32的使用,因此这似乎是推荐的方法:docs.microsoft.com/zh-cn/powershell/scripting/getting-已开始/…
Aakash Shah

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"
Kevin Smyth

6

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

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


TSDISCON已在刚刚检查的Windows 2000中引入,并且在Windows XP中也可用。
Jeroen Wiert Pluimers,2012年

2
不要将rundll32.exe与LockWorkStation一起使用,它会与调用堆栈混淆,并将该混乱留在您的会话中。
Jeroen Wiert Pluimers,2012年

2

由于不建议通过rundll32.exe运行LockWorkStation,因此另一个解决方案是使用Wizmo。赶紧跑:

wizmo lock

2

对于在调度程序上运行,或者在离开计算机几分钟后,可以使用 timeout /t 36000 /nobreak & rundll32.exe user32.dll,LockWorkStation 创建.bat文件将其放入计划任务中,将触发器置于空闲状态。

您可以更改/t xxx。您需要等待多少时间。

感谢Kevin,他使用了该命令来关闭系统,即: timeout /t 36000 /nobreak & shutdown /h /f


只是这样,如果您没有得到答复,您就不会感到失望,您应该知道自己已经回答了一个已被接受且年龄5岁的问题。您没有做错任何事情。只是想让你知道。
CharlieRB

1

这是远程PC的工作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 2012年

1
这将锁定正在运行的机器
G-。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.