如何关闭锁定的PC(vb.net)?

时间:2010-09-13 10:50:14

标签: vb.net shutdown locked

在vb.net中关闭电脑很容易:

Process.Start("shutdown", "-s -t 00")

除非用户已经锁定了PC,否则上述操作失败。

如何在vb.net中解决这个问题?如何关闭锁定的PC?

该程序将在本地运行。

6 个答案:

答案 0 :(得分:1)

你可以P/Invoke ExitWindowsEx

C#中有一个例子,但我相信你可以转换它。

答案 1 :(得分:1)

我认为你正在寻找'-f'标志来强制关机。

来自MS KB article的引用: 当计算机被锁定时,如果与-f选项一起运行Shutdown.exe命令,则可以关闭计算机。

答案 2 :(得分:1)

后人:

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是强制关机,当电脑被锁定时,它比关机/ f更优雅,并且在重启时似乎不会导致程序或服务出现任何问题。

答案 3 :(得分:1)

System.Diagnostics.Process.Start("shutdown", "-s -f -t 00")

这将强制关闭在00ms静默。您必须调用每个进程的代码是多余的,请使用上面的代码。只需在顶部做一个System.Imports.IO就可以了。

答案 4 :(得分:0)

请查看CodeProject上的这篇文章,该文章说明了如何强制计算机远程关机,以便了解如何执行此操作。

答案 5 :(得分:0)

使用System.Management命名空间比启动外部工具更优雅。这是C#中的一个代码示例,它应该很容易转换:

http://www.dreamincode.net/forums/topic/33948-how-to-shut-down-your-computer-in-c%23/