moonrise
Advanced Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Код: //////////////////////////////////////////////////////////// // shutdown.js v.1. // Cкрипт выключения компьютера с подтверждением присутсвия пользователя и с возможностью отмены им выключения. // При включенном окне входа в систему скрипт выключает компьютер. // Работоспособность проверена на Windows 7 Pro RUS x32 // Скрипт распространяется по принципу "Как есть". Автор не несет ответственности за любые последствия =). // Авторство: Imshenetskiy Alexandr ака moonrise, 2013 // // Отдельная благодарность: // Roman Traxtenberg - http://forum.georgievsk.info/index.php?act=Profile&CODE=showcard&MID=2 // Glagolev Alexandr ака Nameless // anton04 - http://forum.ru-board.com/profile.cgi?action=show&member=anton04 // и активным пользователям портала http://forum.ru-board.com //////////////////////////////////////////////////////////// // Определяем, в какую из групп входит пользователь // и если он входит в группу администраторов - завершаем работу скрипта //В случае необходимости - раскоментируйте и укажите имена групп и пользователей в зависимости от локализации системцы. // var WshNetwork = WScript.CreateObject("WScript.Network"); // var UserObj,EE,GroupObj; // UserObj = GetObject("WinNT://"+WshNetwork.UserDomain+"/"+WshNetwork.UserName); // EE = new Enumerator(UserObj.Groups()); // while (!EE.atEnd()) // { // GroupObj = EE.item(); // if (GroupObj.Name == "Domain Admins" || GroupObj.Name == "Administrators") WScript.Quit(); // EE.moveNext(); // } // Создание диалогового окна и команды на выключение ПК var obj = GetObject("winmgmts:{impersonationLevel=impersonate," + "(Shutdown)}//./root/cimv2").ExecQuery ("SELECT * FROM Win32_OperatingSystem" + " WHERE Primary=true"); var e = new Enumerator(obj); // Задаем время для диалогового окна, в течении которого пользователь может выбрать один из вариантов работы, // выключение ПК или продолжение работы. Если в течении заданного времени в MSG_Time (в секундах) ничего не произойдет, // то автовыключение ПК var MSG_Time= 300; // 0 - кнопка ОК. // 1 - кнопки ОК и Отмена. // 2 - кнопки Стоп, Повтор, Пропустить. // 3 - кнопки Да, Нет, Отмена. // 4 - кнопки Да и Нет. // 5 - кнопки Повтор и Отмена. // // 16 - значок Stop. // 32 - значок Question. // 48 - значок Exclamation. // 64 - значок Information. var vbOK = 0; var vbInformation = 64; var vbCancel = 2; var Message = "Уважаемые коллеги! \nВ соответствии с принятыми на Предприятии политиками безопасности в 19:00 произойдет автоматическое отключение компьютера.\nПри необходимости продолжить работу нажмите кнопку <<Ок>>."; var Title = "Автозавершение работы системы"; var Process = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("Select * from Win32_Process Where Name = 'logonUI.exe'"); function kill_comp(){ for (;!e.atEnd();e.moveNext()) { // 0 (0x0) - Log Off // 4 (0x4) - Forced Log Off (0 + 4) // 1 (0x1) - Shutdown // 5 (0x5) - Forced Shutdown (1 + 4) // 2 (0x2) - Reboot // 6 (0x6) - Forced Reboot (2 + 4) // 8 (0x8) - Power Off // 12 (0xC) - Forced Power Off (8 + 4) e.item().Win32Shutdown(12); }} function dialog_msg() { var WSHShell = WScript.CreateObject("WScript.Shell"); // var intDoIt = WSHShell.Popup(Message, MSG_Time, Title, vbOK + vbInformation); if ( Process.Count == 0 ) { // -1 - таймаут. // 1 - кнопка ОК. // 2 - кнопка Отмена. // 3 - кнопка Стоп. // 4 - кнопка Повтор. // 5 - кнопка Пропустить. // 6 - кнопка Да. // 7 - кнопка Нет. if (WSHShell.Popup(Message, MSG_Time, Title, vbOK + vbInformation) == 1) { WScript.Quit(); } } } //Сам скрипт =) dialog_msg(); // Вырубаем машину - спать! kill_comp(); |
| Всего записей: 1986 | Зарегистр. 19-09-2001 | Отправлено: 19:51 13-05-2013 | Исправлено: moonrise, 20:04 13-05-2013 |
|