Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows NT/2000/2003 (http://forum.oszone.net/forumdisplay.php?f=5)
-   -   Как в Win2000 можно программно выключить компьютер ? (http://forum.oszone.net/showthread.php?t=3253)

pss 14-03-2002 23:37 18011

Как в Win2000 можно программно выключить компьютер ? В Win98 для этого можно использовать команду  rundll32 user.exe,ExitWindows.Под WIN2000 она не работает.

BeerMan 14-03-2002 23:52 18012

http://www.chem.univ.kiev.ua/~adsh/win2k/.

...отправить машину в спячку можно следующей командой:
%windir%\System32\rundll32.exe powrprof.dll,SetSuspendState
Если создать *.cmd файл подобного содержания, то с его помощью можно будет вводить машину в hibernate из шедулера, в заданное время. Для того что бы выключить компьютер, можно воспользоваться следующим методом. Создаем в любом текстовом редакторе файл poweroff.vbs следующего содержания:

dim OpSysSet, obj
Set OpSysSet = GetObject("winmgmts:{impersonationLevel=impersonate," & _
              "(Shutdown)}//./root/cimv2").ExecQuery _
               ("SELECT * FROM Win32_OperatingSystem" &_
              " WHERE Primary=true")
         
For Each obj In OpSysSet
   obj.Win32Shutdown(8)
Next

В дальнейшем можно стартовать этот скрипт из командной строки или включить вызов в командный файл. Уже готовый скрипт при желании можно скачать здесь: http://www.chem.univ.kiev.ua/~adsh/w...t/poweroff.zip



Chris 15-03-2002 14:06 18013

pss
загляни на http://www.freeware.ru там есть много планировщиков, что хочешь сделают, хоть винду деинсталируют

vasketsov 15-03-2002 21:41 18014

Функция ExitWindowEx.

а команда действительно работать не будет. Где ты видел в 2000-й user.exe? Там есть user32.dll.

А вообще "программно" - это случаем не к программированию относится?

ZevS 19-03-2002 23:42 18015

Если хочеш, есть такая прога в каталоге Виндовса - shutdown.

Guest 30-08-2002 08:01 18016

Нужно Сначала установить необходимые привилегии
\ SetPrivilegies(...) \ , а потом делай что хочеш

Vasily1 14-05-2003 19:37 18017

Прошу прощения, но есть скрипт подобного содержания:
-----------------------------------------------------------
dim OpSysSet, obj
strComputer = "192.168.0.250"
Set OpSysSet = GetObject("winmgmts:{impersonationLevel=impersonate," & _
                        "(Shutdown)}\\" & strComputer & "\root\cimv2").ExecQuery _
                        ("SELECT * FROM Win32_OperatingSystem" &_
                        " WHERE Primary=true")

For Each obj In OpSysSet
   obj.Win32Shutdown(8)
Next
---------------------------------------------------------------
Выключает удаленную машину хорошо, но если машина залочена, то толку никакого.
Вопросы такие:
1. Что означает цифра в предпоследней строке скрипта, вернее нужно описание значений цифр от 0 до возможного  (8 - выключение, это понятно)?
2. Как посредством подобного скрипта вырубить заблокированную машину?
3. Возможно ли что-то подобное написать на JavaScript. Где взять пример.

Варианты типа программ не подходят, нужно именно скриптами.
Всем заранее спасибо!

Iskatell 26-03-2004 18:23 18018

К сожалению у меня этот способ не сработал. (poweroff.vbs)
Выдает ошибку:" Не удается найти исполняющее ядро для VBScript <имя скрипта>"


mix_mix 05-12-2005 20:52 380171

Native API
 
Сначала получаем привилегию SeShutdownPrivilege функцией AdjustTokenPrivileges.
Затем на выбор:
"Нормально" выкл. комп - ExitWindowsEx(EWX_SHUTDOWN or EWX_FORCE, 0);
Метод покруче - NtShutdownSystem(0); (Функция находится в ntdll.dll; вырубает комп без вопросов и примерно за 0,2 сек)
Можно еще отправить комп в спящий режим - NtInitiatePowerAction(3,2,3,0); (Но это уже не в ту степь; функция находится тоже в ntdll.dll)
Учите Native API, Товарищи, это офигенно мощная штука!

От модератора monkkey

Уважаемый! Не надо гнуть пальцы, пожалуйста, и выражаться, поднимая тему полуторагодовалой давности.


Время: 19:20.

Время: 19:20.
© OSzone.net 2001-2025