Apagar el sistema2

Arturo José Pérez Verdú ajpv en alu.ua.es
Lun Dic 23 09:38:16 CET 2002


Se me olvido pegar el código que utilizo:

 #
 # Adjustar Privilegios
 #
 def AdjustPrivilege(self, enable = 1):
  flags = TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY
  htoken = win32security.OpenProcessToken(win32api.GetCurrentProcess(),
flags)
  id = win32security.LookupPrivilegeValue(None, SE_SHUTDOWN_NAME)
  if enable:
   newPrivileges = [(id, SE_PRIVILEGE_ENABLED)]
  else:
   newPrivileges = [(id, 0)]
  win32security.AdjustTokenPrivileges(htoken, 0, newPrivileges)

 #
 # Detener el sistema
 #
 def Halt(self):
  self.AdjustPrivilege(1)
  try:
   win32api.InitiateSystemShutdown(None, "Apagando el sistema", 60, 1, 0)
  finally:
   self.AdjustPrivilege(0)

> Estoy usando Python bajo windows XP y ME. Mi intención es apagar el
sistema
> después de acabar una serie de tareas automatizadas a altas horas de la
> noche. Utilizo las extensiones para windows de python donde esta el modulo
> win32api. Utilizo la función InitiateSystemShutdown... y realmente se
inicia
> el cierre del sistema. El problema es que no llega a apagarse del todo. Se
> queda con el mensaje de: "ahora puede apagar el equipo".
> En un principio he pensado que podria ser alguna opción de windows,
pero...
> el sistema se apaga bien desde el menu de inicio->apagar. Luego no
entiendo
> porque al hacer la llamada através del modulo win32api no se cierra.
>
> ¿Alguna sugerencia?
>
> Gracias.
>
> nota: para iniciar el cierre del sistema cambio los permisos, etc... y
todo
> lo que hay que hacer para que el cierre se inicie, pero no si hay ahi
algun
> flag que modifique el modo de cerrarse.




Más información sobre la lista de distribución Python-es