Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Ждущий и сплящий режими

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Ждущий и сплящий режими
Имя
Сообщение << Старые топики   Новые топики >>
Ждущий и сплящий режими - 2007-01-22 14:31:37.486666   
sinker

Сообщений: 134
Оценки: 0
Присоединился: 2007-01-08 21:55:33.930000
  Как заставить комп заснуть из дельфи-программы? Можно ли его разбудить? Заранее спасибо.
Post #: 1
RE: Ждущий и сплящий режими - 2007-01-22 16:46:32.010000   
blacksun

Сообщений: 2360
Оценки: 0
Присоединился: 2006-09-27 03:05:59.350000
Разбудить хрен, а вот перевести легко - поиши в гугле
Post #: 2
RE: Ждущий и сплящий режими - 2007-01-30 02:31:23.350000   
Tages

Сообщений: 30
Оценки: 0
Присоединился: 2006-03-09 01:02:16
Вот тебе код. Только прога может сменить пользователя, перезагрузить/выкл комп… Подредактируй.
Смотри хелп по ф-и ExitWindowsEx();

unit LER;

interface

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

type
  TForm1 = class(TForm)
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    GroupBox1: TGroupBox;
    RadioButton4: TRadioButton;
    Label1: TLabel;
     function SetPrivilege(aPrivilegeName: string;aEnabled: boolean): boolean;
     function WinExit(iFlags: integer): boolean;
    procedure RadioButton1Click(Sender: TObject);
    procedure RadioButton2Click(Sender: TObject);
    procedure RadioButton3Click(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure RadioButton4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
function TForm1.SetPrivilege(aPrivilegeName: string;aEnabled: boolean): boolean;
var
  TPPrev,
    TP: TTokenPrivileges;
  Token: THandle;
  dwRetLen: DWord;
begin
  Result := False;
  OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, Token);
  TP.PrivilegeCount := 1;
  if (LookupPrivilegeValue(nil, PChar(aPrivilegeName),TP.Privileges[0].LUID)) then
  begin
    if (aEnabled) then
      TP.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED
    else
      TP.Privileges[0].Attributes := 0;
    dwRetLen := 0;
    Result := AdjustTokenPrivileges(Token, False, TP, SizeOf(TPPrev),TPPrev, dwRetLen);
  end;
  CloseHandle(Token);
end;

function TForm1.WinExit(iFlags: integer): boolean;
//   возможные флаги:
//   EWX_LOGOFF
//   EWX_REBOOT
//   EWX_SHUTDOWN
begin
  Result := True;
  if (SetPrivilege('SeShutdownPrivilege', true)) then
  begin
    if (not ExitWindowsEx(iFlags, 0)) then
     begin
      Result := False;
     end;
    SetPrivilege('SeShutdownPrivilege', False)
  end
  else
  begin
   Result := False;
 end;
end;


procedure TForm1.RadioButton1Click(Sender: TObject);
begin
Form1.WinExit(EWX_LOGOFF);
Form1.Close;
end;

procedure TForm1.RadioButton2Click(Sender: TObject);
begin
Form1.WinExit(EWX_REBOOT);
Form1.Close;
end;

procedure TForm1.RadioButton3Click(Sender: TObject);
begin
Form1.WinExit(EWX_SHUTDOWN);
Form1.Close;
end;

procedure TForm1.RadioButton4Click(Sender: TObject);
begin
Form1.WinExit(EWX_POWEROFF);
Form1.Close;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if key=VK_ESCAPE then Form1.Close;
end;

end.
Post #: 3
RE: Ждущий и сплящий режими - 2007-02-01 00:09:49.483333   
halkfild

Сообщений: 286
Оценки: 0
Присоединился: 2006-11-27 18:26:36.310000
а как можно добавить программу на выполнение до винды…

загружается перед виндой и спрашивает аутентификацию… (можно сделать двохуровневую или просто после прохождения аутентификации программы автоматом пропускать в винду)
Post #: 4
RE: Ждущий и сплящий режими - 2007-02-01 01:02:46.896666   
Tages

Сообщений: 30
Оценки: 0
Присоединился: 2006-03-09 01:02:16
:) Помню у нас на УПК(МНВК) была такая тема(ну на вход в систему). Делается просто.
В БИОСе задаёш пароль на запуск машины. Пока пароль не введёш, система не загрузится.

Мона и по ;)ламерски;), через Autoexec.bat(но Я не помню, с 2000 и далее это пашет или нет).
Вот в 98 просто пишеш на том же Паскале прогу под ДОС. Пока пароль не верен, прога не зак свою работу. А раз не закончит, то не передаст управление следующему пункту загрузки ОС.

Ну сделай аналогию на Delphi c BP.
Post #: 5
RE: Ждущий и сплящий режими - 2007-02-01 01:24:39.970000   
halkfild

Сообщений: 286
Оценки: 0
Присоединился: 2006-11-27 18:26:36.310000
нет вопрос намного глобальнее…. надо не просто пароль а что-то поинтереснее тоесть полноценная программа, что грузится до винды

например хранить ключ на дискете… вставил дискету и комп загрузился… можно сделать на смарт картах…
Post #: 6
RE: Ждущий и сплящий режими - 2007-02-02 00:31:21.646666   
Tages

Сообщений: 30
Оценки: 0
Присоединился: 2006-03-09 01:02:16
Так работает CHCDSK. Посмотри в Гугле или на Яндексе.

Ещё так грузится всеми любимый(ну почти) SI (SoftIce).
Post #: 7
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Ждущий и сплящий режими







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.