PDA

Ver la Versión Completa : Apagado de Windows


Enan0
27-12-2004, 14:10:51
Hola buenas. he tenido un problema con las siguientes instruciones y windows 2000.
cuando las ejecuto estoy logueado como administrador, pero en ninguna me apaga el PC, Solo Con EWX_FORCE me cierra la secion, pero nunca puedo apagar el pc, alguien sabe porque??

Gracias!


ExitWindowsEx(EWX_SHUTDOWN,0);
ExitWindowsEx(EWX_POWEROFF,0);
ExitWindowsEx(EWX_FORCE,0);

barrauda
27-12-2004, 18:23:35
Hola, no soy muy experto en este tema pero te envío un código que me sirvió mucho para apagar máquinas con Xp, no lo probé en 2000 pero puede ser que funcione.

function ShutDownWindows(Flag: word): Boolean;
//Función que permite apagar la computadora
var
TokenPriv: TTokenPrivileges;
H: DWord;
HToken: THandle;
begin
if Win32Platform = VER_PLATFORM_WIN32_NT then
begin
OpenProcessToken(GetCurrentProcess,
TOKEN_ADJUST_PRIVILEGES,HToken);
LookUpPrivilegeValue(NIL, 'SeShutdownPrivilege',
TokenPriv.Privileges[0].Luid);
TokenPriv.PrivilegeCount := 1;
TokenPriv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
H := 0;
AdjustTokenPrivileges(HToken, FALSE,
TokenPriv, 0, PTokenPrivileges(NIL)^, H);
CloseHandle(HToken);
end;
Result := ExitWindowsEx(Flag, 0);
end;


y para llamarlo tenés que escribir en la línea de código de algún botón (o lo que quieras) lo siguiente:


ShutDownWindows(EWX_POWEROFF);

Espero que te sirva, como te dije, yo lo uso siempre con máquinas con XP así que creo que te va a funcionar.
Nos vemos