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.
Código:
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