001
27.01.2006, 19:34 Uhr
sam-semi
|
Hi ~Sword_xx,
ich hab mich zwar noch nie mit diesen Funktionen auseinandergesetzt, jedoch steht in der MSDN dass man dazu das SE_SHUTDOWN_NAME Privileg benötigt, um die Funktion AbortSystemShutdown auszuführen.Hab dazu in der MSDN folgenden Beispielcode gefunden:
C++: |
BOOL PreventSystemShutdown() { HANDLE hToken; // handle to process token TOKEN_PRIVILEGES tkp; // pointer to token structure // Get the current process token handle so we can get shutdown // privilege. if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) return FALSE; // Get the LUID for 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 shutdown privilege for this process. AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0); if (GetLastError() != ERROR_SUCCESS) return FALSE; // Prevent the system from shutting down. if ( !AbortSystemShutdown(NULL) ) return FALSE; // Disable shutdown privilege. tkp.Privileges[0].Attributes = 0; AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES) NULL, 0); return TRUE; }
|
Ich hoffe das hilft dir wenigstens etwas weiter
Schönen Gruß sam-semi |