Shutting down a W2K computer
-
I've got the following problem, I use to call ExitWindowsEx in win98 environments to turn off the pc, but it doesn't work on w2k os, What could I use to turn off/restart the computer on w2k?? (using vb or vc++ or any other .net tool) I prefer not use WMI interfaces, any ideas?? Thanks in advance. Just three words: void main(void)
-
I've got the following problem, I use to call ExitWindowsEx in win98 environments to turn off the pc, but it doesn't work on w2k os, What could I use to turn off/restart the computer on w2k?? (using vb or vc++ or any other .net tool) I prefer not use WMI interfaces, any ideas?? Thanks in advance. Just three words: void main(void)
Only one I can think of off the top of my head is InitiateSystemShutdownA from ADVAPI32.DLL. Not the prettiest, but that's what I usually use. Mark Conger Sonork:100.28396
-
I've got the following problem, I use to call ExitWindowsEx in win98 environments to turn off the pc, but it doesn't work on w2k os, What could I use to turn off/restart the computer on w2k?? (using vb or vc++ or any other .net tool) I prefer not use WMI interfaces, any ideas?? Thanks in advance. Just three words: void main(void)
You have to get privileges, here is the example for MSVC++, I think it could be easylly maded in C# or you could siply use a dll, here is the code
BOOL MySystemShutdown() { HANDLE hToken; TOKEN_PRIVILEGES tkp; // Get a token for this process. if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) return( FALSE ); // Get the LUID for the shutdown privilege. LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid); tkp.PrivilegeCount = 1; // one privilege to set tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; // Get the shutdown privilege for this process. AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0); if (GetLastError() != ERROR_SUCCESS) return FALSE; // Shut down the system and force all applications to close. if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0)) return FALSE; return TRUE; }
I hope it helps. You can read more about privileges here. Signature... I look for that at home... tomorrow -
You have to get privileges, here is the example for MSVC++, I think it could be easylly maded in C# or you could siply use a dll, here is the code
BOOL MySystemShutdown() { HANDLE hToken; TOKEN_PRIVILEGES tkp; // Get a token for this process. if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) return( FALSE ); // Get the LUID for the shutdown privilege. LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid); tkp.PrivilegeCount = 1; // one privilege to set tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; // Get the shutdown privilege for this process. AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0); if (GetLastError() != ERROR_SUCCESS) return FALSE; // Shut down the system and force all applications to close. if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0)) return FALSE; return TRUE; }
I hope it helps. You can read more about privileges here. Signature... I look for that at home... tomorrow