Имя: Пароль:
1C
1C 7.7
v7: из users.usr получить список каталогов пользователей.
,
0 Cthulhu
 
01.09.16
17:07
на VB/autoit (не на 77).
Собственно список пользователей - ясно как (нашел пару ссылок с 77-кодом, легко перегоняемым в vb/autoit, тупопарсинг текстового куска файла с контейнером container.contents).
Каталоги тоже можно но только посмотреть - скормив упомянутый выше файл любой приблуде, внятно показывающей содержимое компаундов...
А вот программно - как мне выдрать, какой текстовый кусок (там чуть после container.contents) с полным наим. 1с-юзера + каталогом пользователя + интерфейсом + набором прав к кому относится (как-то плясать от номеров Page.NN я так подозреваю - но как?)

заранееблагодаренивсьотакоэ
1 vde69
 
01.09.16
17:18
1. ЗАЧЕМ ???
2. сабж нарушает правила форума
3. поищи что-то вроде http://catalog.mista.ru/public/22037/
2 hitodom
 
01.09.16
17:19
(1) Ну как бы это стандартный виндовый контейнер
3 hitodom
 
01.09.16
17:20
(2) Это равносильно, если бы данные лежали в зипе, и был бы вопрос как вытащить данные из этого зипа
4 Cthulhu
 
01.09.16
17:51
(1):

3) мне не нужна готовая программа на дельфях или прочий пропиетар (странно, я об этом изначально сказал недостаточно ясно?)

2) Не нарушает. Никаких модификаций программного продукта. Никаких модификаций данных. Никаких модификаций поведения программного продукта.

1) Затем что надо. Сделать "прокладку" для запуска 1с в терминальных сессиях с добавлением следующих фич:
- не оставлять зависших 1с-окон авторизации (которые лочат базу и сам users.usr).
- предоставлять возможность повторного запуска пользователя в той же базе (при невозможности сброса оторвавшейся терминальной сессии с его первым/предыдущим входом) - выделением отличного от оригинального (из users.usr) рабочего каталога с копированием в него (и по завершении - обратно в оригинальный) cfg и lst с настройками
- добавить функционал проверки дополнительных условий при запуске (стоп-файлы, временные запреты глобальные-локальные, логирование входов в альтернативных хранилищах, etc.) и реализацию дополнительных сценариев (без запуска 1с)
- добавить функционал сброса запущенной 1с по маркер-файлу или событию - вне зависимости от открытых в 1с модальных форм и прочих пердимоноклей
- и т.п.
5 Cthulhu
 
01.09.16
17:53
(2): и? ткните пжалста в нужном направлении...
на тем.момент я могу только из стрима побайтно выдернуть и интерпретировать блок со списком имен пользователей (ну и их page-номеров, с которыми не знаю что и как делать чтобы из остального содержимого корректно дернуть рабочие каталоги этих пользователей)... :(
6 Torquader
 
01.09.16
23:38
Что такое Compound - это IStorage.
При правильной инициализации из него можно прочитать дерево каталогов и объектов, которое в нём живёт.

P.S. каталог пользователя через \u задаётся при запуске - ставишь альтернативный стартер (или пишешь свой) и забываешь вообще про каталоги - по крайней мере - у меня так.
7 VoditelKobyly
 
02.09.16
12:28
Посмотри в сторону UsersDef.dll
Там есть метод:

ПолучитьСписокПользователейТЗ(<?>)
Синтаксис:
ПолучитьСписокПользователейТЗ(<ПутьКБазе>)                                                                  
Назначение:
Возращает список пользователей с данными в виде таблицы значений:
колонки: ИмяПользователя, ХэшПароляПользователя, ПолноеИмяПользователя, ДиректорияПользователя, ИнтерфейсПользователя, ПраваПользователя
  
Параметры:
<ПутьКБазе> - путь к базе в которой собираемся получить список пользователей (именно путь к базе , а не к файлу users.usr);
8 Cthulhu
 
02.09.16
15:30
(7): спасибо, но мне не надо из 1с - мне надо надо снаружи, до(!) 1с.
9 vde69
 
02.09.16
15:32
(8) а кто тебе мешает использовать UsersDef.dll не из 1с ???
10 Cthulhu
 
02.09.16
16:38
(9): мой сволочной ненавистный перфекционизм.
(не хотелось бы тянуть в терминальные сессии что-либо кроме "голой" exe-прокладки-стартера; да и не очень знаю как в аутоит/вбс/жс использовать длл-ки, которые, чтрого говоря, неизвестно что и как могут наворотить в сессии)
11 Изобретатель Велосип
 
02.09.16
16:43
(10) Если ты пишешь стартер, то указываешь каталог явно, зачем файл users ковырять ?
Имя пользователя, пароль, каталог пользователя и каталог временных файлов задаётся как параметры командной строки - что ещё мешает "отцу русской демократии" ?
12 Cthulhu
 
02.09.16
16:44
ЗЫ: строго говоря, по факту просмотра этого компаунда в raw-виде... ну соответствие page-номера каждому имени юзера я выдираю по-байтовым парсингом... и вижу текстовые фрагменты, которые в том же виде вижу в page-потоках при просмотре копаунд-вьювером... мне бы даже совет - как бы по page-номеру определить лексему (последовательность байтов или символов) для дальнейшего raw-парсинга -- наличие которой говорило бы о том, что "вот дальше щя будет кусок, который относется к этому самому page"...
13 Cthulhu
 
02.09.16
16:45
(11): (терпеливо) для получения списка пользователей и списка их оригинальных рабочих каталогов, которые нужны для (4) п.3
14 Cthulhu
 
02.09.16
16:46
^^^ поправка: п.1
15 Torquader
 
03.09.16
00:41
Это, вроде как, и есть стартер.
Просто, стартеру нужен ещё один глобальный каталог, где будет лежать сценарий запуска - тогда всякое ковыряние в файлах будет не нужно - всё будет делаться по сценарию.
P.S. а если ещё и WTS_API подцепить, то при отвале сеанса можно будет закрывать 1С или выполнять в ней какое-то действие.
16 Cthulhu
 
03.09.16
11:14
(15): ох вот да!
если возможно+нетрудно - примерчиков бы (autoit или нунезнаю vbs/js/1c) как про способ найти заголовок/начало стрима в компаунд-файле по его имени (ну или получить список юзеров с раб каталогами из users.usr), так и про использование wts_api (список/свойства/атрибуты/управление)...
заранеепремногоблагоданостьбеспредельная.
17 Cthulhu
 
03.09.16
11:16
(16)+ по wts страшно интересно определять время бездействия, отключать сессию, сбрасывать сессию... ну и инициировать корректный выход из 1с в сессии... etc.
18 Бородатый Админ
 
04.09.16
16:27
(17) WTS_API качается help с сайта Microsoft.
Я не помню, если ли русский, но и в английском всё понятно.
Только вот - если у вас терминальные клиенты "тонкие", то не все функции в них работают.

А Compound обычно читается примерно так:
https://support.microsoft.com/en-us/kb/186898
19 Бородатый Админ
 
04.09.16
16:30
Ну или, вот по-русски:
https://habrahabr.ru/post/254541/