Продолжение
Code
//получаем системный идентификатор необходимой нам привилегии
LookupPrivilegeValue(null, SE_SHUTDOWN_NAME, ref tkp.Luid);
//повышем привилигеию своему процессу
AdjustTokenPrivileges(htok, false, ref tkp, 0, IntPtr.Zero, IntPtr.Zero);
}
}
//публичный метод для перезагрузки/выключения машины
public int halt(bool RSh, bool Force)
{
SetPriv(); //получаем привилегия
//вызываем функцию InitiateSystemShutdown, передавая ей необходимые параметры
return InitiateSystemShutdown(null, null, 0, Force, RSh);
}
//публичный метод для блокировки операционной системы
public int Lock()
{
if (LockWorkStation())
return 1;
else
return 0;
}
Собственно класс имеет два метода:
Lock() - вызов этого метода приведет к блокированию ос (но не выходу из системы!)
halt(bool RSh, bool Force) - вызов этого метода приводит к перезагрузке/выключению, вот возможные режимы:
Code
halt(true, false) //мягкая перезагрузка
halt(true, true) //жесткая перезагрузка
halt(false, false) //мягкое выключение
halt(false, true) //жесткое выключение