Беда у меня вот какая.
Пользователи работают в терминале (1С).
Мне нужно ночью архивировать базы и делать обмен между ними. Если кто-то из пользователей оставляет 1С работать на ночь - то соответственно ни о какой архивации и речи быть не может.
Решил я использовать через шедулер свой скрипт, который в определённое время суток находит процессы 1С и прибивает их.
Вот этот скрипт (в принципе можно подставить любое имя процесса).
- Код: Выделить всё
Option Explicit
dim WMI
dim SQuery
dim Processes
dim Process
dim WshShell
Dim ArgProcessName
argprocessname="1cv7s.exe"
'Создаем объект WshShell
set WshShell = WScript.CreateObject("WScript.Shell")
'Соединяемся с WMI
set WMI=GetObject("winMgmts:")
'Формируем текст запроса
SQuery="SELECT * FROM Win32_Process WHERE Name='" & _
argprocessname & "'"
'Создаем коллекцию-результат запроса
set Processes=WMI.ExecQuery(SQuery)
WshShell.Popup "Завершаем просессы с именем " & _
ArgProcessName,5,"Завершение процесса"
'Цикл по всем элементам коллекции
for each Process in Processes
'Завершаем процесс
Process.Terminate()
Next
WScript.Quit(0)
Но вся загвоздка в том, что скрипт прибивает почему-то только процессы текущего пользователя и процессы пользователей, которые входят в одну группу с пользователем, от имени которого я запускаю.
Запускаю под учёткой администратора.
Как можно обойти это ограничение? Не писать же на каждую группу пользователей (ещё не известно, отработает ли или нет... ) своё задание?!!! Такими методами у меня шедулер разрастётся до размеров "Войны и мира" Толстого...
Подскажите плиз выход.