Sử dụng hàm không-được-quản-lý ExitWindowsEx của Win32 API.

.NET Framework không chứa các chức năng cần thiết để tắt hay khởi động lại Windows. Tuy nhiên, bạn có thể dễ dàng thực hiện như thế bằng hàm ExitWindowsEx từ thư viện user32.dll. Hàm này nhận vào một thông số cho biết bạn muốn đăng xuất (giá trị 0), khởi động lại (giá trị 2), hay tắt (giá trị 1). Ngoài ra, bạn có thể sử dụng giá trị 4 để buộc hệ thống thực hiện một hành động đã-được-chỉ-định (ngay cả khi người dùng đã hủy bỏ nó). Điều này thường gây bực tức cho người dùng và bạn nên sử dụng nó một cách cẩn trọng.

Ứng dụng dưới đây nhập hàm ExitWindowsEx, định nghĩa các hằng liên quan, và sử dụng nó để yêu cầu đăng xuất hệ thống:

Public Module ShutdownTest   
    ' Đây là hàm API dùng để thoát khỏi Windows.
    Private Declare Function ExitWindowsEx Lib "user32" _
      (ByVal uFlags As Long, ByVal dwReserved As Long) As Long   
    ' Kiểu liệt kê này giữ các hằng liên quan.
    Private Enum ExitWindowsFlags
        ' Sử dụng hằng này để đăng xuất mà không khởi động lại.
        Logoff = 0   
        ' Sử dụng hằng này để khởi động lại hệ thống.
        Reboot = 2  
        ' Sử dụng hằng này để tắt hệ thống
        ' (và tắt máy tính, nếu phần cứng hỗ trợ).
        Shutdown = 1
        ' Sử dụng hằng này để buộc hệ thống tắt hay 
        ' khởi động lại (ngay cả khi người dùng đã hủy bỏ nó).
        Force = 4
    End Enum
   
    Public Sub Main()
        ExitWindowsEx(ExitWindowsFlags.Logoff, 0&)
    End Sub
End Module