|
v7: Узнать имя терминального пользователя | ☑ | ||
---|---|---|---|---|
0
YHVVH
29.09.11
✎
09:51
|
из 7.7 программно очень хочется знать имя терминального пользователя.
Вроде встречал на мисте решение проблемы , найти не могу. Помогите кто знает. Спасибо. |
|||
1
filh
29.09.11
✎
09:53
|
||||
2
filh
29.09.11
✎
09:53
|
||||
3
filh
29.09.11
✎
09:54
|
(0) лентяй!
|
|||
4
YHVVH
29.09.11
✎
09:59
|
(3) согласен
|
|||
5
YHVVH
29.09.11
✎
10:08
|
спасибо
|
|||
6
Холст
29.09.11
✎
10:23
|
(1), (2) это конечно здорово, но по-моему не совсем то что просил автор
(1) сообщает имя и клиента пользователя, где запущен скрипт, и запустив скрипт на одном сеансе, не получишь параметры других сеансов (2) здесь предлагается заходить в 1С под пользователем 1С, совпадающим с именем логина, решение конечно простое но обходит проблему вместо решения может как то можно делать автоматически то, что делается вручную когда хочешь узнать кто сидит в 1С под безымянным юзером в терминале: вручную смотришь ID процессов, заблокировавших 1Сv7.lck и потом в диспетчере задач смотришь владельцев - юзеров этих процессов |
|||
7
YHVVH
29.09.11
✎
10:25
|
то что нужно, вопрос снят
|
|||
8
Холст
29.09.11
✎
10:26
|
(7) если позволите, перехвачу вашу тему своим вопросом из (6), в расширение темы так сказать
|
|||
9
YHVVH
29.09.11
✎
10:27
|
(8) :-))) я получил то что хотел спасибо, дальше как хотите
|
|||
10
jimbo
29.09.11
✎
10:32
|
(6) Тоже интересно, давай думать вместе...
видится так - при старте системы получить системное имя пользователя и куда-нибудь его записать |
|||
11
jimbo
29.09.11
✎
10:32
|
да хоть в справочник пользователей)
|
|||
12
jimbo
29.09.11
✎
10:34
|
||||
13
Lepochkin
29.09.11
✎
10:35
|
scr = СоздатьОбъект("WScript.Shell"); ДоменноеИмя=scr.ExpandEnvironmentStrings("%username%");
|
|||
14
jimbo
29.09.11
✎
10:37
|
угу-угу, ещё бы что-нибудь поэлегантнее справочника пользователи придумать...
можно в принципе в файл писать в каталоге базы, вида : ИмяПользователя=СистемноеИмяКотороеПолучили |
|||
15
filh
29.09.11
✎
10:40
|
(6) не надо тут, а с учетом (7) проходи мимо.
Рано тебе еще телепатировать :) |
|||
16
jimbo
29.09.11
✎
10:58
|
Процедура ЗаписатьДоменноеИмяВФайл()
ТекПольз1с = ИмяПользователя(); scr = СоздатьОбъект("WScript.Shell"); ДоменноеИмя=scr.ExpandEnvironmentStrings("%username%"); ИмяФайла = КаталогИБ() + "users.ini"; Ф = СоздатьОбъект("текст"); если ФС.СуществуетФайл(ИмяФайла) = 1 Тогда Ф.Открыть(ИмяФайла); КонецЕсли; найдено=0;ъ=0; для ъ =1 по Ф.КоличествоСтрок() Цикл если СтрЧислоВхождений(ф.ПолучитьСтроку(ъ), ТекПольз1с + "=") > 0 Тогда ф.ЗаменитьСтроку(ъ,ТекПольз1с + "=" + ДоменноеИмя); найдено=1; Прервать; КонецЕсли; КонецЦикла; если найдено = 0 Тогда ф.ДобавитьСтроку(ТекПольз1с + "=" + ДоменноеИмя); КонецЕсли; ф.Записать(ИмяФайла); КонецПроцедуры |
|||
17
jimbo
29.09.11
✎
10:59
|
добавить в глобальник,
на выходе - в каталоге ИБ файл users.ini вида "Администратор=root1 Администратор1=root" |
|||
18
Холст
29.09.11
✎
11:47
|
(16), (17) хорошо, но как и раньше это обход задачи и не прямое решение по автоматизации действия "вручную смотришь ID процессов, заблокировавших 1Сv7.lck и потом в диспетчере задач смотришь владельцев - юзеров этих процессов"
|
|||
19
VoditelKobyly
29.09.11
✎
12:03
|
Может вам вот это поможет:
Попытка ИмяЮзераТ=""; ИмяКомпаТ=""; scrptCtrl=СоздатьОбъект("MSScriptControl.ScriptControl"); scrptCtrl.language="vbscript"; scrptCtrl.addcode(" |Function GetUser() |Set WSHShell = CreateObject(""WScript.Shell"") |Set WshSysEnv = WshShell.Environment(""Process"") |GetUser = WshSysEnv(""Username"") |End Function |Function GetClient() |Set WSHShell = CreateObject(""WScript.Shell"") |Set WshSysEnv = WshShell.Environment(""Process"") |GetClient = WshSysEnv(""Clientname"") |End Function |"); ИмяЮзераТ = scrptCtrl.run("GetUser"); // возвращает имя пользователя Windows (пользователь в терминале) ИмяКомпаТ = scrptCtrl.run("GetClient"); // имя терминального клиента (комп в терминале) Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; Попытка ИмяКомпа= ""; ИмяЮзера=""; ИмяДомена=""; Network = CreateObject("WScript.Network"); Исключение Сообщить("> Ошибка: не удалось создать объект ""WScript.Network""","i"); КонецПопытки; ИмяКомпа = Network.ComputerName; ИмяЮзера = Network.UserName; ИмяДомена = Network.UserDomain; Network = 0; |
|||
20
jimbo
29.09.11
✎
12:15
|
(18) а как ты себе это представляешь?
|
|||
21
jimbo
29.09.11
✎
12:17
|
(19) спасибо, надо действительно в файл имя компа добавить. Мало-ли с какого терминала он зайдет...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |