3

vb.net で PC をシャットダウンするのは簡単です。

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

ユーザーがPCをロックしていない限り、上記は失敗します。

vb.netでこれを回避するにはどうすればよいですか? ロックされた PC をシャットダウンするにはどうすればよいですか?

プログラムはローカルで実行されます。

4

6 に答える 6

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

これにより、サイレントに 00ms でシャットダウンが強制されます。各プロセスを呼び出す必要があるコードは冗長です。上記のコードを使用してください。System.Imports.IO上部でa を実行するだけで準備完了です。

于 2016-06-05T07:08:16.937 に答える
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

利用可能なフラグの詳細については、Google の「Win32Shutdown」を参照してください (上記の ss)。5 は、PC がロックされている場合の強制シャットダウンですが、shutdown /f よりも適切であり、再起動時にプログラムやサービスに問題が発生することはないようです。

于 2010-09-13T13:50:40.877 に答える
1

P/Invoke ExitWindowsExを呼び出すことができます

そこに C# の例がありますが、変換できると確信しています。

于 2010-09-13T10:57:10.957 に答える
1

シャットダウンを強制する「-f」フラグを探していると思います。

MS KB記事からの引用: コンピューターがロックされている場合、Shutdown.exe コマンドを -f オプションと共に実行すると、コンピューターをシャットダウンできます。

于 2010-09-13T10:58:20.807 に答える
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 に答える