Выключение и перезагрузка компа на С++
Пользователи, просматривающие топик: 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. Пробовал всякие там статейки из нета, но там такие функции которые даже в справочнике нет.
|
|
|
Выключение и перезагрузка компа на С++ - 2005-02-07 17:01:29
|
|
|
2Freak
Сообщений: 60
Оценки: 0
Присоединился: 2004-11-30 15:26:56
|
Получи привилегию debug
|
|
|
Выключение и перезагрузка компа на С++ - 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]
|
|
|
Выключение и перезагрузка компа на С++ - 2005-02-07 22:22:28
|
|
|
Stork
Сообщений: 65
Оценки: 0
Присоединился: 2005-01-19 15:50:50
|
Спасибо, теперь работает хотя я пробовал нечто подобное и он к меня только пользователя менял. И без int и return обойтись не получилось компелятор начал ругаться. И еще а покороче больше ничего нет, ну там одна API функция или еще что-то? Ну всеравно спасибо за это.
|
|
|
Выключение и перезагрузка компа на С++ - 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]
|
|
|
Выключение и перезагрузка компа на С++ - 2005-02-09 00:58:45
|
|
|
Stork
Сообщений: 65
Оценки: 0
Присоединился: 2005-01-19 15:50:50
|
Ну ладно, все равно большое спасибо!!!
|
|
|
Выключение и перезагрузка компа на С++ - 2005-02-09 19:46:17
|
|
|
DeepThinker
Сообщений: 177
Оценки: 0
Присоединился: 2004-06-13 02:26:09
|
У тя какая версия VC? По-моему, она по-черному не соответсвует ANSI. ;) 6.0?
|
|
|
Выключение и перезагрузка компа на С++ - 2005-02-11 00:26:55
|
|
|
Stork
Сообщений: 65
Оценки: 0
Присоединился: 2005-01-19 15:50:50
|
У меня стоит MSVC 6.0 и она была сосдана по стандарту ANSI. Работает со стандартом С++ ANSI/ISO.
|
|
|
Выключение и перезагрузка компа на С++ - 2005-02-12 14:59:18
|
|
|
koresh
Сообщений: 19
Оценки: 0
Присоединился: 2004-03-14 11:13:42
|
Вы че пацану советуете, не проше ли с помощью функции system()
int main() { system( shutdown -r ); return 0; }
это была перезагрузка…
|
|
|
Выключение и перезагрузка компа на С++ - 2005-02-12 23:03:05
|
|
|
Stork
Сообщений: 65
Оценки: 0
Присоединился: 2005-01-19 15:50:50
|
А какой хедер надо подключить, а то компелятор не знает эту функцию?
|
|
|
Выключение и перезагрузка компа на С++ - 2005-02-13 11:36:53
|
|
|
cccp
Сообщений: 7
Оценки: 0
Присоединился: 2005-01-29 21:21:53
|
#include<stdlib.h>….
|
|
|
Выключение и перезагрузка компа на С++ - 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]
|
|
|
Выключение и перезагрузка компа на С++ - 2005-02-13 14:50:50
|
|
|
Stork
Сообщений: 65
Оценки: 0
Присоединился: 2005-01-19 15:50:50
|
Я испробовал это, вылетает сообщение такоеже как когда червяк lsass убивает. А что советовал eXploit реально работает без всякого глюка.
|
|
|
|
|