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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.07.2008, 13:49   #31
The_Darkness
Пользователь
 
Регистрация: 06.01.2008
Сообщений: 83
По умолчанию

Цитата:
ща поищу где-то пример валялся =)
Буду премного благодарен
Прогрессирующий чайник..
The_Darkness вне форума Ответить с цитированием
Старый 16.07.2008, 14:30   #32
Ring0Sn
Форумчанин
 
Аватар для Ring0Sn
 
Регистрация: 06.09.2007
Сообщений: 239
По умолчанию

Цитата:
Сообщение от JTG Посмотреть сообщение
Естевственно возможно, из режима пользователя - через ntShutdownSystem, ща поищу где-то пример валялся =)
Код:
SHUTDOWN_ACTION = (ShutdownNoReboot, ShutdownReboot, ShutdownPowerOff);

function NtShutdownSystem(Action: SHUTDOWN_ACTION): DWord; stdcall;
                                               external 'NTDLL.DLL';
Она вроде по обычному выключает, или нет oO?

Последний раз редактировалось Ring0Sn; 16.07.2008 в 14:34.
Ring0Sn вне форума Ответить с цитированием
Старый 16.07.2008, 14:44   #33
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Она выключает типо выключили из розетки, по крайней мере если заюзать системный сервис NtShutdownSystem.
пыщь
JTG вне форума Ответить с цитированием
Старый 16.07.2008, 14:50   #34
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

NtShutdownSystem выключает так же, как и ExitWindowsEx, только "без предупреждения".
B_N вне форума Ответить с цитированием
Старый 16.07.2008, 15:06   #35
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  _SHUTDOWN_ACTION = (
    ShutdownNoReboot,
    ShutdownReboot,
    ShutdownPowerOff);
  SHUTDOWN_ACTION = _SHUTDOWN_ACTION;
  TShutdownAction = SHUTDOWN_ACTION;

  NTSTATUS = Longint;
  PNTSTATUS = ^NTSTATUS;
  TNTStatus = NTSTATUS;

  function  NtShutdownSystem(Action : SHUTDOWN_ACTION): NTSTATUS; stdcall; external 'ntdll.dll';

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var   
  hToken: THandle;
  tkp, prevst: TTokenPrivileges;   
  rl: DWORD;   
begin
  OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken);

  LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid);
  tkp.PrivilegeCount := 1;
  tkp.Privileges[0].Attributes := 2;

  AdjustTokenPrivileges(hToken, FALSE, tkp, SizeOf(prevst), prevst, rl);

  NtShutdownSystem(ShutdownPowerOff);
end;

end.
Та ну блин, всё ж прекрасно отрубается, "мементо море"
пыщь
JTG вне форума Ответить с цитированием
Старый 16.07.2008, 15:15   #36
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

JTG, да это всё понятно, можно даже так:
Код:
void main()
{
	long action = 2;
	__asm {
		mov eax, 0xF9
		lea edx, action
		int 2eh
	}
}
Но привилегии всё равно нужно поднимать.
B_N вне форума Ответить с цитированием
Старый 16.07.2008, 15:27   #37
Ring0Sn
Форумчанин
 
Аватар для Ring0Sn
 
Регистрация: 06.09.2007
Сообщений: 239
По умолчанию

Цитата:
Сообщение от B_N Посмотреть сообщение
Но привилегии всё равно нужно поднимать.
в Ring3 постоянно нужны привелегии, даже на то чтоб сходить посса*ь
Ring0Sn вне форума Ответить с цитированием
Старый 16.07.2008, 15:45   #38
The_Darkness
Пользователь
 
Регистрация: 06.01.2008
Сообщений: 83
По умолчанию

В общем если я получаю привелегии,
этим:
Код:
NtShutdownSystem(ShutdownPowerOff);
Я вырублю комп, так?
Прогрессирующий чайник..
The_Darkness вне форума Ответить с цитированием
Старый 16.07.2008, 15:53   #39
The_Darkness
Пользователь
 
Регистрация: 06.01.2008
Сообщений: 83
По умолчанию

Цитата:
в Ring3 постоянно нужны привелегии, даже на то чтоб сходить посса*ь
Интересно какое сообщение отправляет виндовс на это действие?
P.S. Сори за флуд
Прогрессирующий чайник..
The_Darkness вне форума Ответить с цитированием
Старый 16.07.2008, 15:57   #40
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Код:
NtShutdownSystem(ShutdownPowerOff);
нет, это не мгновенно.
из Ring3 мгновенно не получится. Конечно есть такой вариант: подсоединить к компьютеру (через USB или LPT) такое устройство, которое по сигналу нажимало на кнопку на сетевом фильтре, либо какую-нибудь механическую руку, которая бы вытащина вилку из розетки!
rpy3uH вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как можно запустить компьютер без пароля. |{ () T Безопасность, Шифрование 21 01.06.2008 21:37
как выключить/перезагрузить компьютер motaro Паскаль, Turbo Pascal, PascalABC.NET 1 28.03.2008 02:01
Безопасная связка компьютер-компьютер, как организовать наилучшую защиту Alar Операционные системы общие вопросы 3 17.02.2008 21:15
Как выключить удалённый компьютер c помощью Server Socket. muravey Работа с сетью в Delphi 3 09.11.2007 08:09