|   |   | 
| 
 | Как определить имя клиентского компьютера пользователя? | ☑ | ||
|---|---|---|---|---|
| 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 стоит...     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |