Форум - Ответы     (  К темам )
 ?  Raven: Помогите отключить Комп в системеме NT (какими функ-ми это можно сдел) (28-04-2003 10:50:19)
Я написал прогу, которая отключает, перезагружает комп и тп.
Я использовал функции
ExitWindowsEx(EWX_REBOOT, 0)
ExitWindowsEx(EWX_SHUTDOWN, 0);

Но, как оказалось, они не хотят работать в системах NT. Я пречел в help'е, что для того чтобы они заработали в NT, надо объявить какие-то PRIVILEGES (SE_SHUTDOWN_NAME privilege). Примера там не было и у меня не выходит, поэтому прошу Вас подсказать как можно перезагрузить Комп в NT (Windows XP). Помогите разобраться с этими PRIVILEGE или дайте другое решение.
Благодарю!!!
 Георгий (28-04-2003 23:46:30)
а зачем 2-й пост сделал?
ответ см. там
 Dr.Phoenix (06-05-2003 14:21:04)
Привелегии можно взять так:
///////////////////////
HANDLE hToken;
LUID seshutdownnameValue;
TOKEN_PRIVILEGES tkp;

if ( ! OpenProcessToken( GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken ) )
return;

if ( !LookupPrivilegeValue( NULL, SE_SHUTDOWN_NAME, &seshutdownnameValue ) )
{
CloseHandle( hToken );
return;
}

tkp.PrivilegeCount = 1;
tkp.Privileges[0].Luid = seshutdownnameValue;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

AdjustTokenPrivileges( hToken, FALSE, &tkp, sizeof tkp, NULL, NULL );

CloseHandle( hToken );
/////////////////////

А дальше уже ExitWindowsEx(EWX_SHUTDOWN, 0); У меня так работает.
А ваще читай FAQ, их нормальных всего штуки 4, и там все есть про это...


support@cbuilder.ru