|
v7: Определить ID терминальной сессии | ☑ | ||
---|---|---|---|---|
0
yur4egg
14.11.13
✎
12:29
|
1С 7.7 + SQL + Windows Server 2003
Задача: пользователи часто звонят, прося выбросить их повисшие сеансы, хочется сделать возвможность им самим выбрасывать самих себя. План решения: 1. Сделать батник, который запускается с ярлыка на компе юзера. Он создает текстовый файл с именем локального компа и сохраняет его где-то в сетевой папке общего доступа. 2. Этот файл служит сигналом для другой программы, которая крутится на сервере, и по нахождению этого файла выбрасывает сеанс клиента с этим именем компа. Затем подчищает текстовый файл. Проблема в том,что нигде в интернете не смог найти способ, как по имени компа определить ID сеанса или наоборот. Диспетчер задач - единственная прога, которая показывает эту информацию, но она не сохраняет свою таблицу в текст. Утилиты и команды вроде quinsta или query user показывают ID сеанса, но не показывают имя компа. В 1С-ке можно через WScript.Shell можно определить имя пользователя и имя компа, но нельзя определить ID. А выбрасывать сеанс нужно именно по ID. Потому как выбросить по имени не получится, ибо есть одновременно несколько юзеров под одной учеткой на сервере. А выбросить по имени компа я опять же нигде не нашел, как? |
|||
1
Стрелок
14.11.13
✎
12:29
|
идиотизм. а поставить таймаут по бездействию или отключению на сброс не судьба?
|
|||
2
Стрелок
14.11.13
✎
12:30
|
а заодно решить вопрос по поводу повисших сеансов
|
|||
3
Web00001
14.11.13
✎
12:35
|
(1)+100500
Но бывает так, что не все сеансы надо отключать, :) вроде как вот это должно помочь http://greendail.ru/node/430 |
|||
4
ADirks
14.11.13
✎
14:16
|
Можно прямым запросом:
при старте ЗапросСКЛ.УстановитьТекстовыйПараметр("Пользователь", элПользователь); ЗапросСКЛ.Выполнить("Set NoCount ON |UPDATE $Справочник.Пользователи |Set $Справочник.Пользователи.SPID = 0 |WHERE | $Справочник.Пользователи.SPID = @@SPID | | |UPDATE $Справочник.Пользователи |Set $Справочник.Пользователи.SPID = @@SPID |WHERE | ID = :Пользователь |"); при завершении ЗапросСКЛ.УстановитьТекстовыйПараметр("Пользователь", элПользователь); ЗапросСКЛ.Выполнить("Set NoCount ON |UPDATE $Справочник.Пользователи |Set $Справочник.Пользователи.SPID = 0 |WHERE | ID = :Пользователь |"); Ну и кроме SPID можно имя клиентского компа ещё писать, и всё что душа пожелает |
|||
5
ADirks
14.11.13
✎
14:33
|
кстати, потом этот SPID используется для изощрённого поражения пользователей в правах
| LEFT JOIN $Справочник.СвойстваКонтрагентов СВК ON СВК.ID = "+ОснСв |WHERE | IsNull((SELECT $П1.фОграничитьДоступныхКонтрагентов FROM $Справочник.Пользователи П1 WHERE $П1.SPID = @@SPID), 0) = 0 | OR $СВК.ЗначениеСвойства IN ( | SELECT | $Свойства.Свойство | FROM | $Справочник.РазрешенныеКонтрагенты_Свойства Свойства | WHERE | Свойства.ParentExt = (SELECT П2.ID FROM $Справочник.Пользователи П2 WHERE $П2.SPID = @@SPID) | AND Свойства.IsMark = 0 | ) это хвост вьюшки по контрагентам. Выглядит ужасно, но на удивление тормозит вполне приемлемо. Используется в том числе и в журналах документов. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |