在 vb.net 中关闭电脑很容易:
Process.Start("shutdown", "-s -t 00")
除非用户已锁定电脑,在这种情况下上述操作失败。
我如何在 vb.net 中解决这个问题?如何关闭锁定的 PC?
该程序将在本地运行。
System.Diagnostics.Process.Start("shutdown", "-s -f -t 00")
这将强制在 00ms 内静默关机。您必须调用每个进程的代码是多余的,请使用上面的代码。只需System.Imports.IO
在顶部做一个,你就可以开始了。
那里有一个 C# 示例,但我相信你可以转换它。
我认为您正在寻找“-f”标志来强制关闭。
引用 MS 知识库文章: 当计算机被锁定时,如果您运行 Shutdown.exe 命令和 -f 选项,您可以关闭计算机。
为后代:
Dim ms As ManagementScope = New ManagementScope("\\LocalHost")
ms.Options.EnablePrivileges = True
Dim oq As ObjectQuery = New ObjectQuery("SELECT * FROM Win32_OperatingSystem")
Dim query1 As ManagementObjectSearcher = New ManagementObjectSearcher(ms, oq)
Dim queryCollection1 As ManagementObjectCollection = query1.Get()
For Each mo As ManagementObject In queryCollection1
Dim ss As String() = {"5"}
mo.InvokeMethod("Win32Shutdown", ss)
Next
谷歌“Win32Shutdown”了解更多可用标志的详细信息(上面的 ss)。5 是在 pc 被锁定时强制关闭,但它比 shutdown /f 更优雅,并且在重新启动时似乎不会导致程序或服务出现任何问题。
查看CodeProject上的这篇文章,该文章说明了强制计算机远程关闭,让您了解如何执行此操作。
使用System.Management
命名空间比启动外部工具更优雅。这是 C# 中的代码示例,应该很容易转换:
http://www.dreamincode.net/forums/topic/33948-how-to-shut-down-your-computer-in-c%23/