|
Как определить имя клиентского компьютера пользователя? | ☑ | ||
---|---|---|---|---|
0
Dolphinbet
20.07.15
✎
14:28
|
Пользователь работает в 1С в терминале, можно ли определить имя компьютера, с которого он подключился к терминалу?
|
|||
1
Лефмихалыч
20.07.15
✎
14:30
|
c:\>echo %clientname%
|
|||
2
Маратыч
20.07.15
✎
14:31
|
(0) Через 1С никак, разве что скрипт прикручивать внешний.
|
|||
3
Dolphinbet
20.07.15
✎
14:32
|
(1) угу, работает. Осталось это к 1С прикрутить...
|
|||
4
eklmn
гуру
20.07.15
✎
14:39
|
КомандаСистемы("echo %clientname%");
|
|||
5
Feunoir
20.07.15
✎
14:41
|
(3) Через WSH:
WHS = Новый COMОбъект("WScript.Shell"); ИмяКлиента = WHS.ExpandEnvironmentStrings("%CLIENTNAME%")); |
|||
6
Dolphinbet
20.07.15
✎
14:43
|
ИмяКомпьютера = "";
WMI = ПолучитьCOMОбъект("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv"); Для Инд = 1 По 20 Цикл WMI.GetStringValue("2147483649", "Volatile Environment\"+Инд, "CLIENTNAME", ИмяКомпьютера); Если ЗначениеЗаполнено(ИмяКомпьютера) Тогда Прервать; КонецЕсли; КонецЦикла; |
|||
7
palpetrovich
20.07.15
✎
14:53
|
(5) +1 я так делаю:
WshShell = CreateObject("WScript.Shell"); РабочееМесто = WshShell.ExpandEnvironmentStrings("%clientname%"); Если Врег(РабочееМесто)="CONSOLE" Тогда РабочееМесто = ComputerName(); КонецЕсли; |
|||
8
Dolphinbet
20.07.15
✎
14:58
|
(7) да, вроде работает на терминале, а если локально то возвращает %CLIENTNAME% почему то
|
|||
9
Dolphinbet
20.07.15
✎
15:00
|
Всем спасибо!
|
|||
10
palpetrovich
20.07.15
✎
15:05
|
(8) эт старый код с базы на ХР, проверил на в7 действительно %CLIENTNAME% возвращает
|
|||
11
qwerty
20.07.15
✎
15:11
|
WshShell = Новый COMОбъект("WScript.Shell");
мИмяКомпьютера = ВРег(СокрЛП(WshShell.Environment("Process").Item("Clientname"))); Если ПустаяСтрока(мИмяКомпьютера) или мИмяКомпьютера = "CONSOLE" Тогда мИмяКомпьютера = ВРег(СокрЛП(ИмяКомпьютера())); КонецЕсли; |
|||
12
Dolphinbet
11.08.15
✎
10:58
|
Прикольно - все эти методы перестали работать)
КомандаСистемы("echo %clientname%") теперь в терминале выдает просто CLIENT почему-то... |
|||
13
Злопчинский
11.08.15
✎
11:02
|
%clientname% - это именно с какого компа ПОДКЛЮЧИЛСЯ к терминальной сесии? или с какого компа была СОЗДАНА терминальная сессия?
|
|||
14
Dolphinbet
11.08.15
✎
11:03
|
Перелогинился в терминал - заработало...
|
|||
15
Dolphinbet
11.08.15
✎
11:03
|
В общем странно как-то это все работает...
|
|||
16
Dolphinbet
11.08.15
✎
11:04
|
(13) а в чем разница?
|
|||
17
Dolphinbet
11.08.15
✎
11:04
|
Вообще, мне нужен комп с которого подключаюсь к терминальной сессии.
|
|||
18
Злопчинский
11.08.15
✎
14:36
|
(16) очевидно же... я подключился и ЗАПУСТИЛ терминальную сессию из дома. Отключился от терминальной сесии дома (но она осталась "живая"). Пришел в офис, сел за локальный комп, подключился к "живой" сессии - какой комп будет выдаваться по %clientname% - ???
|
|||
19
HawkEye
11.08.15
✎
14:41
|
(18) в XP и 2003 - было подобное, возвращал имя клиента который создал.. в дальнейшем исправили и сейчас должен возвращать имя текущего клиента, но я не проверял.
|
|||
20
Гёдза
11.08.15
✎
14:43
|
(18) винда не хранит информацию о том где создал сессию
|
|||
21
HawkEye
11.08.15
✎
14:47
|
+19 kb 281981
"When you reconnect to a disconnected Terminal Services session on a different computer from the one on which you originally established the connection, the ClientName variable retains the computer name of the computer on which you created the original session." |
|||
22
Dolphinbet
13.08.15
✎
12:59
|
(21) Да, похоже так и есть.
То есть нужно поставить обновление, чтобы ClientName возвращал имя текущего клиента? |
|||
23
HawkEye
13.08.15
✎
13:04
|
(22) ну если такие древние ОС используются как XP и\или 2003, то да. в следующих ОС я не сталкивался с необходимостью узнавать имя клиента
|
|||
24
Dolphinbet
13.08.15
✎
13:05
|
На терминале Виндоус Сервер 2003 стоит...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |