Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Windows 2000 y el shutdown (https://www.clubdelphi.com/foros/showthread.php?t=4561)

Athalon 20-10-2003 17:52:01

Windows 2000 y el shutdown
 
Bueeeeeeeeeeeeeeeeeenas a todos,

Ando algo perdido en el super registro de windows 2000, tengo que hacer que cuando se le de a la opción de "apagar el sistema" te reinicie la máquina en lugar de apagarla, es por un tema de seguridad en los que los equipos siempre tienen que estar en funcionamiento y para que no llegue un manazas y apaga el ordenador.

Tambien seria una solución el poder eliminar la opción de "apagar el sistema del menú", en tal caso seria conveniente quitar el de cerrar sesión, tambien seria una buena pregunta, ¿como hacer que solo aparezca la opción de reiniciar en el menú de "Apagar"....

Gracias por adelantado....

marcoszorrilla 20-10-2003 20:40:12

Mira a ver si te funciona, la verdad no he tenido ocasión de probarlo.

Código:

var
  hToken: THANDLE;
  tkp, tkDumb: TTokenPrivileges;
  DumbInt: DWord;
begin
  FillChar(tkp, sizeof(tkp), 0);
    // Obtengo el token de este proceso
  if not (OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or
TOKEN_QUERY, hToken)) then
    raise Exception.create('OpenProcessToken falló con el código ' +
inttostr(GetLastError));
    // Obtengo el LUID para provilegios de Shutdown
  LookupPrivilegeValue(nil, pchar('SeShutdownPrivilege'),
tkp.Privileges[0].Luid);
  tkp.PrivilegeCount := 1;
  tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
    // Obtengo el privilegio de shutdown para este proceso
  AdjustTokenPrivileges(hToken, false, tkp, sizeof(tkDumb), tkDumb,
DumbInt);
    // No puedo testear el valor de retorno de AdjustTokenPrivileges
  if GetLastError <> ERROR_SUCCESS then
    raise Exception.create('AdjustTokenPrivileges falló con el código ' +
inttostr(GetLastError));
    // apago el sistema, todas las aplicaciones se cerrarán
  if not ExitWindowsEx(EWX_POWEROFF, 0) then
    raise Exception.create('ExitWindowsEx falló con el código ' +
inttostr(GetLastError));
end;

Un Saludo

Athalon 20-10-2003 20:46:45

Gracias por la rápida respuesta pero me referia desdel registro de windows (regedit) y no desde un programa delphi, a lo mejor no lo he puesto en el lugar adecuado.

Gracias.

roman 20-10-2003 21:35:41

Usa


HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoClose


para quitar el item "Apagar..." del menú inicio.

y


HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\ForceStartMenuLogOff


para que aparezca el item "Cerrar sesión..."

De esta manera sólo podrán cerrar sesión y no apagar el equipo.

Puedes encontrar más información en www.winguides.com

// Saludos

Athalon 21-10-2003 21:28:12

Gracias por la ayuda, ahora mismito empezare a mirarme la web ya que de momento las soluciones que me has dado no me acaban de interesar.

Athalon 30-10-2003 13:19:21

Continuo sin encontrar la solución :'-(((

He midado la web que me han recomendado pero ninguna de las opciones que podrian ayudarme han funcionado, necesito ayuda urgentemente, es tan simple (o no) como reiniciar el equipo cuando se le da la orden de apagar en windows 2000.

Gracias por la ayuda.


La franja horaria es GMT +2. Ahora son las 00:05:19.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi