3

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

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

除非用户已锁定电脑,在这种情况下上述操作失败。

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

该程序将在本地运行。

4

6 回答 6

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

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

于 2016-06-05T07:08:16.937 回答
1

你可以P/Invoke ExitWindowsEx

那里有一个 C# 示例,但我相信你可以转换它。

于 2010-09-13T10:57:10.957 回答
1

我认为您正在寻找“-f”标志来强制关闭。

引用 MS 知识库文章当计算机被锁定时,如果您运行 Shutdown.exe 命令和 -f 选项,您可以关闭计算机。

于 2010-09-13T10:58:20.807 回答
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 是在 pc 被锁定时强制关闭,但它比 shutdown /f 更优雅,并且在重新启动时似乎不会导致程序或服务出现任何问题。

于 2010-09-13T13:50:40.877 回答
0

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

于 2010-09-13T10:55:28.583 回答
0

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

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

于 2010-09-13T11:27:37.403 回答