Перейти на главную страничку сайта (список статей, файлы для скачивания)

ФОРУМ (здесь можно обсудить эту статью, а также любые проблемы программирования на различных макроязыках и в скриптовых средах)

Рецепты WMI: управление сеансом пользователя

Примеры кода в статье приводятся на языке VBScript для административных сценариев Windows.

Вот некоторые методы класса Win32_OperatingSystem, позволяющие управлять сеансом пользователя:


МетодОписание
Reboot() Перезагружает компьютер. Для выполнения метода нужна привилегия SeShutdownPrivilege. Возвращает 0 (в случае успеха) или код ошибки.
SetDateTime(LocalDatetime) Устанавливает текущее системное время на компьютере, переданное в единственном параметре. Для выполнения метода нужна привилегия SeSystemtimePrivilege. Возвращает 0 (в случае успеха) или код ошибки.
Shutdown() Выгружает все программы и библиотеки и безопасно выключает компьютер. Для выполнения метода нужна привилегия SeShutdownPrivilege. Возвращает 0 (в случае успеха) или код ошибки.
Win32Shutdown(Flags) Обеспечивает полный набор вариантов завершения, поддерживаемых Win32 операционными системами. Для выполнения метода нужна привилегия SeShutdownPrivilege. Возвращает 0 (в случае успеха) или код ошибки. Возможные значения параметра Flags:
  • 0 - Log Off.
  • 0+4 - Forced Log Off.
  • 1 - Shutdown.
  • 1+4 - Forced Shutdown.
  • 2 - Reboot.
  • 2+4 - Forced Reboot.
  • 8 - Power Off.
  • 8+4 - Forced Power Off.

Следующий сценарий демонстрирует возможность перезагрузки, выключения или Log Off указанного компьютера. Перед запуском раскомментируйте один из вызовов (Reboot, Shutdown или Win32Shutdown).

CompName = "." 'точка - текущий компьютер; сюда можно подставить любое сетевое имя компьютера
Set objService = GetObject("winmgmts:{impersonationLevel=impersonate,(Shutdown)}!\\" & CompName & "\root\CIMV2")
If Err.Number <> 0 Then
	WScript.Echo Err.Number & ": " & Err.Description
	WScript.Quit
End If
For Each objOS In objService.ExecQuery("SELECT * FROM Win32_OperatingSystem")
	Exit For
Next
'objOS.Reboot 'перезагрузка
'objOS.Shutdown 'выключение
'objOS.Win32Shutdown 0 'Log Off
If Err.Number <> 0 Then
	WScript.Echo Err.Number & ": " & Err.Description
	WScript.Quit
End If

Следующий сценарий устанавливает системное время указанного компьютера.

CompName = "." 'точка - текущий компьютер; сюда можно подставить любое сетевое имя компьютера
Set objService = GetObject("winmgmts:{impersonationLevel=impersonate,(Systemtime)}!\\" & CompName & "\root\CIMV2")
If Err.Number <> 0 Then
	WScript.Echo Err.Number & ": " & Err.Description
	WScript.Quit
End If
For Each objOS In objService.ExecQuery("SELECT * FROM Win32_OperatingSystem")
	Exit For
Next
'11 июня 2005 г., время 20:40:00 для пояса +4 часа от Гринвича
objOS.SetDateTime "20050611204000.000000+240"
If Err.Number <> 0 Then
	WScript.Echo Err.Number & ": " & Err.Description
	WScript.Quit
End If

Людоговский Александр

Перейти на главную страничку сайта (список статей, файлы для скачивания)

© 2007 http://www.script-coding.com При любом использовании материалов сайта обязательна ссылка на него как на источник информации, а также сохранение целостности и авторства материалов.