タイマーでWindowsを終了、再起動させたいのですが


PO  2007-04-23 01:09:19  No: 25905  IP: 192.*.*.*

spineditで時間を指定してradioboxで終了か再起動を指定し
Timerでその時間がこれば終了or再起させたいのですがうまくいきません

procedure TForm1.Button1Click(Sender: TObject);
var
  a: Integer;
begin
  a := SpinEdit1.value * 60000;
  Timer1.Enabled := True;
  Timer1.Interval := a;
  Button1.Enabled := False;
  RadioButton1.Enabled := False;
  RadioButton2.Enabled := False;
  SpinEdit1.Enabled := False;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if(RadioButton1.Checked = True)
    then
      begin
        ExitWindowsEx(EWX_SHUTDOWN,0);
      end
    else
      begin
        ExitWindowsEx(EWX_REBOOT,0);
      end
  ;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Timer1.Enabled := False;
  Button1.Enabled := True;
  RadioButton1.Enabled := True;
  RadioButton2.Enabled := True;
  SpinEdit1.Enabled := True;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Timer1.Interval := 0;
  Timer1.Enabled := False;
end;

end.

このように書いたのですが時間を過ぎても終了、再起動しません・・・

編集 削除
PO  2007-04-23 01:10:42  No: 25906  IP: 192.*.*.*

ExitWindowsEx(EWX_SHUTDOWN,0);
の部分をWinExecでプログラムを起動するように書くと
ちゃんと時間通りに起動してくれるのですが・・・

編集 削除
うんと  2007-04-23 04:47:39  No: 25907  IP: 192.*.*.*

NT系はExitWindowsEx()の前に privilege を設定しないとだめなのでは?

http://delphi.about.com/cs/adptips2003/a/bltip0503_5.htm

編集 削除