@msdn=http://search.microsoft.com/search/results.aspx?qu=$$$ @pinvoke=http://pinvoke.net/$$$.htm Summary: Initiates a shutdown and optional restart of the specified computer, and optionally records the reason for the shutdown. !!!!C# Signature: [DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=true)] public static extern bool InitiateSystemShutdownEx( string lpMachineName, string lpMessage, uint dwTimeout, bool bForceAppsClosed, bool bRebootAfterShutdown, ShutdownReason dwReason); [Flags] public enum ShutdownReason : uint { // Microsoft major reasons. SHTDN_REASON_MAJOR_OTHER = 0x00000000, SHTDN_REASON_MAJOR_NONE = 0x00000000, SHTDN_REASON_MAJOR_HARDWARE = 0x00010000, SHTDN_REASON_MAJOR_OPERATINGSYSTEM = 0x00020000, SHTDN_REASON_MAJOR_SOFTWARE = 0x00030000, SHTDN_REASON_MAJOR_APPLICATION = 0x00040000, SHTDN_REASON_MAJOR_SYSTEM = 0x00050000, SHTDN_REASON_MAJOR_POWER = 0x00060000, SHTDN_REASON_MAJOR_LEGACY_API = 0x00070000, // Microsoft minor reasons. SHTDN_REASON_MINOR_OTHER = 0x00000000, SHTDN_REASON_MINOR_NONE = 0x000000ff, SHTDN_REASON_MINOR_MAINTENANCE = 0x00000001, SHTDN_REASON_MINOR_INSTALLATION = 0x00000002, SHTDN_REASON_MINOR_UPGRADE = 0x00000003, SHTDN_REASON_MINOR_RECONFIG = 0x00000004, SHTDN_REASON_MINOR_HUNG = 0x00000005, SHTDN_REASON_MINOR_UNSTABLE = 0x00000006, SHTDN_REASON_MINOR_DISK = 0x00000007, SHTDN_REASON_MINOR_PROCESSOR = 0x00000008, SHTDN_REASON_MINOR_NETWORKCARD = 0x00000000, SHTDN_REASON_MINOR_POWER_SUPPLY = 0x0000000a, SHTDN_REASON_MINOR_CORDUNPLUGGED = 0x0000000b, SHTDN_REASON_MINOR_ENVIRONMENT = 0x0000000c, SHTDN_REASON_MINOR_HARDWARE_DRIVER = 0x0000000d, SHTDN_REASON_MINOR_OTHERDRIVER = 0x0000000e, SHTDN_REASON_MINOR_BLUESCREEN = 0x0000000F, SHTDN_REASON_MINOR_SERVICEPACK = 0x00000010, SHTDN_REASON_MINOR_HOTFIX = 0x00000011, SHTDN_REASON_MINOR_SECURITYFIX = 0x00000012, SHTDN_REASON_MINOR_SECURITY = 0x00000013, SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY = 0x00000014, SHTDN_REASON_MINOR_WMI = 0x00000015, SHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL = 0x00000016, SHTDN_REASON_MINOR_HOTFIX_UNINSTALL = 0x00000017, SHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL = 0x00000018, SHTDN_REASON_MINOR_MMC = 0x00000019, SHTDN_REASON_MINOR_TERMSRV = 0x00000020, // Flags that end up in the event log code. SHTDN_REASON_FLAG_USER_DEFINED = 0x40000000, SHTDN_REASON_FLAG_PLANNED = 0x80000000, SHTDN_REASON_UNKNOWN = SHTDN_REASON_MINOR_NONE, SHTDN_REASON_LEGACY_API = (SHTDN_REASON_MAJOR_LEGACY_API | SHTDN_REASON_FLAG_PLANNED), // This mask cuts out UI flags. SHTDN_REASON_VALID_BIT_MASK = 0xc0ffffff } !!!!VB.NET Signature: <DllImport("advapi32.dll", SetLastError:=True)> _ Public Function InitiateSystemShutdownEx( _ ByVal lpMachineName As String, _ ByVal lpMessage As String, _ ByVal Timeout As UInteger, _ <MarshalAs(UnmanagedType.Bool)> ByVal bForceAppsClosed As Boolean, _ <MarshalAs(UnmanagedType.Bool)> ByVal bRebootAfterShutdown As Boolean, _ ByVal ShutdownReason As ShutdownReason) As <MarshalAs(UnmanagedType.Bool)> Boolean End Function <Flags()> _ Public Enum ShutdownReason As UInteger ' Microsoft major reasons. SHTDN_REASON_MAJOR_OTHER = &H0UI SHTDN_REASON_MAJOR_NONE = &H0UI SHTDN_REASON_MAJOR_HARDWARE = &H10000UI SHTDN_REASON_MAJOR_OPERATINGSYSTEM = &H20000UI SHTDN_REASON_MAJOR_SOFTWARE = &H30000UI SHTDN_REASON_MAJOR_APPLICATION = &H40000UI SHTDN_REASON_MAJOR_SYSTEM = &H50000UI SHTDN_REASON_MAJOR_POWER = &H60000UI SHTDN_REASON_MAJOR_LEGACY_API = &H70000UI ' Microsoft minor reasons. SHTDN_REASON_MINOR_OTHER = &H0UI SHTDN_REASON_MINOR_NONE = &HFFUI SHTDN_REASON_MINOR_MAINTENANCE = &H1UI SHTDN_REASON_MINOR_INSTALLATION = &H2UI SHTDN_REASON_MINOR_UPGRADE = &H3UI SHTDN_REASON_MINOR_RECONFIG = &H4UI SHTDN_REASON_MINOR_HUNG = &H5UI SHTDN_REASON_MINOR_UNSTABLE = &H6UI SHTDN_REASON_MINOR_DISK = &H7UI SHTDN_REASON_MINOR_PROCESSOR = &H8UI SHTDN_REASON_MINOR_NETWORKCARD = &H0UI SHTDN_REASON_MINOR_POWER_SUPPLY = &HAUI SHTDN_REASON_MINOR_CORDUNPLUGGED = &HBUI SHTDN_REASON_MINOR_ENVIRONMENT = &HCUI SHTDN_REASON_MINOR_HARDWARE_DRIVER = &HDUI SHTDN_REASON_MINOR_OTHERDRIVER = &HEUI SHTDN_REASON_MINOR_BLUESCREEN = &HFUI SHTDN_REASON_MINOR_SERVICEPACK = &H10UI SHTDN_REASON_MINOR_HOTFIX = &H11UI SHTDN_REASON_MINOR_SECURITYFIX = &H12UI SHTDN_REASON_MINOR_SECURITY = &H13UI SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY = &H14UI SHTDN_REASON_MINOR_WMI = &H15UI SHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL = &H16UI SHTDN_REASON_MINOR_HOTFIX_UNINSTALL = &H17UI SHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL = &H18UI SHTDN_REASON_MINOR_MMC = &H19UI SHTDN_REASON_MINOR_TERMSRV = &H20UI ' Flags that end up in the event log code. SHTDN_REASON_FLAG_USER_DEFINED = &H40000000UI SHTDN_REASON_FLAG_PLANNED = &H80000000UI SHTDN_REASON_UNKNOWN = SHTDN_REASON_MINOR_NONE SHTDN_REASON_LEGACY_API = (SHTDN_REASON_MAJOR_LEGACY_API Or SHTDN_REASON_FLAG_PLANNED) ' This mask cuts out UI flags. SHTDN_REASON_VALID_BIT_MASK = &HC0FFFFFFUI End Enum !!!!User-Defined Types: None. !!!!Notes: lpMachineName: The network name of the computer to be shut down. If lpMachineName is NULL or an empty string, the function shuts down the local computer. dwReason: The ShutdownReason enum can be used for this parameter. !!!!Tips & Tricks: None !!!!Sample Code: C#: void ShutdownWithPInvoke2() { const string SE_SHUTDOWN_NAME = "SeShutdownPrivilege"; const short SE_PRIVILEGE_ENABLED = 2; const short TOKEN_ADJUST_PRIVILEGES = 32; const short TOKEN_QUERY = 8; IntPtr hToken; TOKEN_PRIVILEGES tkp; // Get shutdown privileges... OpenProcessToken(Process.GetCurrentProcess().Handle, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, out hToken); tkp.PrivilegeCount = 1; tkp.Privileges.Attributes = SE_PRIVILEGE_ENABLED; LookupPrivilegeValue("", SE_SHUTDOWN_NAME, out tkp.Privileges.pLuid); AdjustTokenPrivileges(hToken, false, ref tkp, 0U, IntPtr.Zero, IntPtr.Zero); bool result = InitiateSystemShutdownEx("", "Shuting down upon request from Tablet", 3, true, false, ShutdownReason.SHTDN_REASON_MAJOR_APPLICATION | ShutdownReason.SHTDN_REASON_FLAG_USER_DEFINED); } // Structures needed for the API calls private struct LUID { public int LowPart; public int HighPart; } private struct LUID_AND_ATTRIBUTES { public LUID pLuid; public int Attributes; } private struct TOKEN_PRIVILEGES { public int PrivilegeCount; public LUID_AND_ATTRIBUTES Privileges; } [DllImport("advapi32.dll")] static extern int OpenProcessToken(IntPtr ProcessHandle, int DesiredAccess, out IntPtr TokenHandle); [DllImport("advapi32.dll", SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] static extern bool AdjustTokenPrivileges(IntPtr TokenHandle, [MarshalAs(UnmanagedType.Bool)] bool DisableAllPrivileges, ref TOKEN_PRIVILEGES NewState, UInt32 BufferLength, IntPtr PreviousState, IntPtr ReturnLength); [DllImport("advapi32.dll")] static extern int LookupPrivilegeValue(string lpSystemName, string lpName, out LUID lpLuid); [DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern bool InitiateSystemShutdownEx( string lpMachineName, string lpMessage, uint dwTimeout, bool bForceAppsClosed, bool bRebootAfterShutdown, ShutdownReason dwReason); [Flags] public enum ShutdownReason : uint { // Microsoft major reasons. SHTDN_REASON_MAJOR_OTHER = 0x00000000, SHTDN_REASON_MAJOR_NONE = 0x00000000, SHTDN_REASON_MAJOR_HARDWARE = 0x00010000, SHTDN_REASON_MAJOR_OPERATINGSYSTEM = 0x00020000, SHTDN_REASON_MAJOR_SOFTWARE = 0x00030000, SHTDN_REASON_MAJOR_APPLICATION = 0x00040000, SHTDN_REASON_MAJOR_SYSTEM = 0x00050000, SHTDN_REASON_MAJOR_POWER = 0x00060000, SHTDN_REASON_MAJOR_LEGACY_API = 0x00070000, // Microsoft minor reasons. SHTDN_REASON_MINOR_OTHER = 0x00000000, SHTDN_REASON_MINOR_NONE = 0x000000ff, SHTDN_REASON_MINOR_MAINTENANCE = 0x00000001, SHTDN_REASON_MINOR_INSTALLATION = 0x00000002, SHTDN_REASON_MINOR_UPGRADE = 0x00000003, SHTDN_REASON_MINOR_RECONFIG = 0x00000004, SHTDN_REASON_MINOR_HUNG = 0x00000005, SHTDN_REASON_MINOR_UNSTABLE = 0x00000006, SHTDN_REASON_MINOR_DISK = 0x00000007, SHTDN_REASON_MINOR_PROCESSOR = 0x00000008, SHTDN_REASON_MINOR_NETWORKCARD = 0x00000000, SHTDN_REASON_MINOR_POWER_SUPPLY = 0x0000000a, SHTDN_REASON_MINOR_CORDUNPLUGGED = 0x0000000b, SHTDN_REASON_MINOR_ENVIRONMENT = 0x0000000c, SHTDN_REASON_MINOR_HARDWARE_DRIVER = 0x0000000d, SHTDN_REASON_MINOR_OTHERDRIVER = 0x0000000e, SHTDN_REASON_MINOR_BLUESCREEN = 0x0000000F, SHTDN_REASON_MINOR_SERVICEPACK = 0x00000010, SHTDN_REASON_MINOR_HOTFIX = 0x00000011, SHTDN_REASON_MINOR_SECURITYFIX = 0x00000012, SHTDN_REASON_MINOR_SECURITY = 0x00000013, SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY = 0x00000014, SHTDN_REASON_MINOR_WMI = 0x00000015, SHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL = 0x00000016, SHTDN_REASON_MINOR_HOTFIX_UNINSTALL = 0x00000017, SHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL = 0x00000018, SHTDN_REASON_MINOR_MMC = 0x00000019, SHTDN_REASON_MINOR_TERMSRV = 0x00000020, // Flags that end up in the event log code. SHTDN_REASON_FLAG_USER_DEFINED = 0x40000000, SHTDN_REASON_FLAG_PLANNED = 0x80000000, SHTDN_REASON_UNKNOWN = SHTDN_REASON_MINOR_NONE, SHTDN_REASON_LEGACY_API = (SHTDN_REASON_MAJOR_LEGACY_API | SHTDN_REASON_FLAG_PLANNED), // This mask cuts out UI flags. SHTDN_REASON_VALID_BIT_MASK = 0xc0ffffff } !!!!Alternative Managed API: None Documentation: InitiateSystemShutdownEx@msdn on MSDN
Edit advapi32.Initiate...
You do not have permission to change this page. If you feel this is in error, please send feedback with the contact link on the main page.