Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 27.11.2010, 00:23   #1
misher
Участник клуба
 
Аватар для misher
 
Регистрация: 26.05.2010
Сообщений: 1,648
По умолчанию Перезагрузка Windows

Почему данный код не работает?
Код:
procedure TForm1.sButton3Click(Sender: TObject);
begin
if   ExitWindowsEx(EWX_FORCE+EWX_REBOOT, 0)
 then

else
ShowMessage('Приложение не может завершить работу');
p.s. Ну или предложите свой...
This world will never be What I expected (c)

Последний раз редактировалось misher; 27.11.2010 в 00:41.
misher вне форума
Старый 27.11.2010, 00:44   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Потому что программе нужно сначала "забрать" привилегию администратора.
mihali4 вне форума
Старый 27.11.2010, 03:06   #3
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

ExitWindowsEx:
Цитата:
To shut down or restart the system, the calling process must use the AdjustTokenPrivileges function to enable the SE_SHUTDOWN_NAME privilege.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума
Старый 27.11.2010, 08:01   #4
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Например так
Код:
procedure TForm1.EnableShutdown;
var
  hProc, hToken: Cardinal;
  mLUID: TLargeInteger;
  mPriv, mNewPriv: TOKEN_PRIVILEGES;
begin
  hProc := GetCurrentProcess;
  OpenProcessToken(hProc,TOKEN_ADJUST_PRIVILEGES + TOKEN_QUERY, hToken);
  LookupPrivilegeValue('', 'SeShutdownPrivilege', mLUID);
  mPriv.PrivilegeCount := 1;
  mPriv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
  mPriv.Privileges[0].Luid := mLUID;
  mNewPriv.PrivilegeCount := 0;
  AdjustTokenPrivileges(hToken, FALSE, mPriv, 4 + 12 * mPriv.PrivilegeCount,
    mNewPriv, mNewPriv.PrivilegeCount);
end;
Выполнить эту процедуру перед ExitWindow
psycho-coder вне форума
Старый 27.11.2010, 16:37   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А я немного по-другому :
Код:
var th, size: Cardinal;
    luid: Int64;
    tp: TOKEN_PRIVILEGES;
    ptp: PTokenPrivileges;
begin
if OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, th) then
if LookupPrivilegeValue(nil, 'SeShutdownPrivilege', luid) then
begin
tp.PrivilegeCount:=1;
tp.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
tp.Privileges[0].Luid:=luid;
ptp:=nil;
AdjustTokenPrivileges(th, false, tp, 0, ptp^, size);
ExitWindowsEx(EWX_REBOOT or ewx_force,0);
end;
end;
mihali4 вне форума
Старый 28.11.2010, 12:27   #6
misher
Участник клуба
 
Аватар для misher
 
Регистрация: 26.05.2010
Сообщений: 1,648
По умолчанию

Всем спасибо за ответы.
This world will never be What I expected (c)
misher вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перезагрузка страницы в IE Antoniusus PHP 2 25.06.2009 08:51
Перезагрузка Windows asja Компьютерное железо 1 11.05.2008 13:22
Выключение и перезагрузка Патрон Win Api 8 26.03.2008 16:24
Перезагрузка Windows agatos Свободное общение 7 21.01.2008 17:45
Перезагрузка LAFam Win Api 13 09.12.2007 09:15