Для потомков:
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" для более подробной информации о доступных флагах (см. Выше).5 - принудительное отключение, когда компьютер заблокирован, но он более изящен, чем shutdown / f, и, по-видимому, не вызывает проблем с программами или службами при перезагрузке.