Прибить процесс

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Прибить процесс

Сообщение Ruslan Demidow » 22.10.2005 (Сб) 19:34

Не знаю к какой теме отнести мой топик, поэтому пишу сюда.
Беда у меня вот какая.
Пользователи работают в терминале (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)


Но вся загвоздка в том, что скрипт прибивает почему-то только процессы текущего пользователя и процессы пользователей, которые входят в одну группу с пользователем, от имени которого я запускаю.
Запускаю под учёткой администратора.
Как можно обойти это ограничение? Не писать же на каждую группу пользователей (ещё не известно, отработает ли или нет... ) своё задание?!!! Такими методами у меня шедулер разрастётся до размеров "Войны и мира" Толстого...
Подскажите плиз выход.
Это Ж-ж-ж-ж неспроста (с) Винни-Пух

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 23.10.2005 (Вс) 9:33

1. Создать новую общую группу
2. Использовать VB+API
3. Закрывать терминальные сессии(программно)
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 23.10.2005 (Вс) 11:39

Sebas писал(а):1. Создать новую общую группу

Отпадает: при изменеии количества пользователей терминала придётся каждый раз перекраивать эту группу, что не всегда возможно (наприер времени нет).

Sebas писал(а):2. Использовать VB+API

Тоже к сожалению громоздкое решение.

Sebas писал(а):3. Закрывать терминальные сессии(программно)

Вот это можно. Из vbs как это сделать?

Хотя я уже решил этот вопрос: так как у меня на всех терминалах установлен Win2003 - я пользую утилиту от MS taskkill с маской образа процесса в параметре. Прибивает на ура.

Спасибо за участие. :)
Это Ж-ж-ж-ж неспроста (с) Винни-Пух


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 100

    TopList