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

Выключение и перезагрузка компа на С++

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

Зашли как: Guest
Все форумы >> [Веб-программинг] >> Выключение и перезагрузка компа на С++
Имя
Сообщение << Старые топики   Новые топики >>
Выключение и перезагрузка компа на С++ - 2005-02-07 01:22:32   
Stork

Сообщений: 65
Оценки: 0
Присоединился: 2005-01-19 15:50:50
Пишу учебную прогу которая моглабы выключать комп в ХР. И сталкнулся с проблемой API функция ExitWindowsEx() не может ни выключить ни перезагрузить комп если приложение не имеет привелегию SE_SHUTDOWN_NAME. Так вот как как можно пометить приложение погонялом SE_SHUTDOWN_NAME. Пробовал всякие там статейки из нета, но там такие функции которые даже в справочнике нет.
Post #: 1
Выключение и перезагрузка компа на С++ - 2005-02-07 17:01:29   
2Freak

Сообщений: 60
Оценки: 0
Присоединился: 2004-11-30 15:26:56
Получи привилегию debug
Post #: 2
Выключение и перезагрузка компа на С++ - 2005-02-07 17:12:13   
eXploit

Сообщений: 17
Оценки: 0
Присоединился: 2005-01-15 12:37:32
Вот пример на VC++:

#include <windows.h>

HANDLE hnd;
TOKEN_PRIVILEGES* pg;
OSVERSIONINFO ver;

main(){

ver.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);
GetVersionEx(&ver);

if (ver.dwPlatformId==VER_PLATFORM_WIN32_NT){

OpenProcessToken (GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES,&hnd);

pg=(TOKEN_PRIVILEGES*)malloc(sizeof(TOKEN_PRIVILEGES)+sizeof(LUID_AND_ATTRIBUTES));

pg->PrivilegeCount = 1;
LookupPrivilegeValue(0,SE_SHUTDOWN_NAME,&pg->Privileges[0].Luid);

pg->Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hnd,FALSE,pg,0,0,0);
free(pg);
CloseHandle(hnd);
}
ExitWindowsEx(EWX_POWEROFF,0);
}

P.S на main() без void внимания не обращай[sm=1.gif]. Просто я больше привык к классическому C[sm=2.gif].Удачи!!![sm=sm203.gif]
Post #: 3
Выключение и перезагрузка компа на С++ - 2005-02-07 22:22:28   
Stork

Сообщений: 65
Оценки: 0
Присоединился: 2005-01-19 15:50:50
Спасибо, теперь работает хотя я пробовал нечто подобное и он к меня только пользователя менял. И без int и return обойтись не получилось компелятор начал ругаться. И еще а покороче больше ничего нет, ну там одна API функция или еще что-то? Ну всеравно спасибо за это.
Post #: 4
Выключение и перезагрузка компа на С++ - 2005-02-08 20:21:42   
eXploit

Сообщений: 17
Оценки: 0
Присоединился: 2005-01-15 12:37:32
Уменьшать объём программы я не пробовал (да и зачем). Одной API функцией здесь всё равно наверное не обойтись т.к. выключение это команда которая требует определённых привелегий, а на NT-платформах это всегда было (и есть[sm=1.gif]) головной болью программеров (другое дело Win9x[sm=1.gif]). Так что вот такие вот дела.[sm=2.gif]
Post #: 5
Выключение и перезагрузка компа на С++ - 2005-02-09 00:58:45   
Stork

Сообщений: 65
Оценки: 0
Присоединился: 2005-01-19 15:50:50
Ну ладно, все равно большое спасибо!!!
Post #: 6
Выключение и перезагрузка компа на С++ - 2005-02-09 19:46:17   
DeepThinker

Сообщений: 177
Оценки: 0
Присоединился: 2004-06-13 02:26:09
У тя какая версия VC? По-моему, она по-черному не соответсвует ANSI. ;) 6.0?
Post #: 7
Выключение и перезагрузка компа на С++ - 2005-02-11 00:26:55   
Stork

Сообщений: 65
Оценки: 0
Присоединился: 2005-01-19 15:50:50
У меня стоит MSVC 6.0 и она была сосдана по стандарту ANSI. Работает со стандартом С++ ANSI/ISO.
Post #: 8
Выключение и перезагрузка компа на С++ - 2005-02-12 14:59:18   
koresh

Сообщений: 19
Оценки: 0
Присоединился: 2004-03-14 11:13:42
Вы че пацану советуете, не проше ли с помощью функции system()

int main()
{
system( shutdown -r );
return 0;
}

это была перезагрузка…
Post #: 9
Выключение и перезагрузка компа на С++ - 2005-02-12 23:03:05   
Stork

Сообщений: 65
Оценки: 0
Присоединился: 2005-01-19 15:50:50
А какой хедер надо подключить, а то компелятор не знает эту функцию?
Post #: 10
Выключение и перезагрузка компа на С++ - 2005-02-13 11:36:53   
cccp

Сообщений: 7
Оценки: 0
Присоединился: 2005-01-29 21:21:53
#include<stdlib.h>….
Post #: 11
Выключение и перезагрузка компа на С++ - 2005-02-13 12:10:41   
f4i1ur3

Сообщений: 118
Оценки: 0
Присоединился: 2004-12-27 01:08:07
quote:

—————-<BR>Цитата: Дата:12.02.2005 14:59:18, Автор:koresh ::
Вы че пацану советуете, не проше ли с помощью функции system()<BR><BR><BR>int main()<BR><BR>{<BR><BR> system( shutdown -r );<BR><BR> return 0;<BR><BR>}<BR><BR><BR>это была перезагрузка…
—————-




1) Не shutdown -r, а "shutdown -r".
2) Ты сам пробовал? Под НТ системой это бред полный!! [sm=mad.gif]
2Stork: не слушай ты этот бред отсталых…. Пиши так как тебе сказал eXploit. [sm=hi.gif]
Post #: 12
Выключение и перезагрузка компа на С++ - 2005-02-13 14:50:50   
Stork

Сообщений: 65
Оценки: 0
Присоединился: 2005-01-19 15:50:50
Я испробовал это, вылетает сообщение такоеже как когда червяк lsass убивает.
А что советовал eXploit реально работает без всякого глюка.
Post #: 13
Страниц:  [1]
Все форумы >> [Веб-программинг] >> Выключение и перезагрузка компа на С++







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

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