Показать полную графическую версию : Как в Win2000 можно программно выключить компьютер ?
Как в Win2000 можно программно выключить компьютер ? В Win98 для этого можно использовать команду rundll32 user.exe,ExitWindows.Под WIN2000 она не работает.
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/win2k/soft/poweroff.zip
pss
загляни на http://www.freeware.ru там есть много планировщиков, что хочешь сделают, хоть винду деинсталируют
vasketsov
15-03-2002, 21:41
Функция ExitWindowEx.
а команда действительно работать не будет. Где ты видел в 2000-й user.exe? Там есть user32.dll.
А вообще "программно" - это случаем не к программированию относится?
Если хочеш, есть такая прога в каталоге Виндовса - shutdown.
Нужно Сначала установить необходимые привилегии
\ SetPrivilegies(...) \ , а потом делай что хочеш
Прошу прощения, но есть скрипт подобного содержания:
-----------------------------------------------------------
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
К сожалению у меня этот способ не сработал. (poweroff.vbs)
Выдает ошибку:" Не удается найти исполняющее ядро для VBScript <имя скрипта>"
Сначала получаем привилегию 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
Уважаемый! Не надо гнуть пальцы, пожалуйста, и выражаться, поднимая тему полуторагодовалой давности.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.