Определить IP-адрес клиента RDP

1. 32 09.03.16 11:32 Сейчас в теме
Просмотрел несколько тем на мисте:
http://www.forum.mista.ru/topic.php?id=524473
http://www.forum.mista.ru/topic.php?id=481072
Сейчас пользуюсь компонентой SendToLocalHost. Работает отлично, но хотелось решения без использования компонент, например, через vbs-скрипт. Кто-нибудь сталкивался с другими решениями такой задачи? Нужно тоже самое, что возвращает компонента SendToLocalHost и я так понимаю, что это значение одного из полей виндового класса WTSQuerySessionInformation.
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. Xershi 963 09.03.16 11:38 Сейчас в теме
(1) Angealtor, можно использовать компоненту работы с пауршел. У меня публикация есть. Или зачем вообще скрипт использовать? Чтобы заказчику не нужно было ставить компоненту? Тогда сохранить сценарий в макет и потом его запускать, что тоже самое, только программно работать сложнее.
3. Fox-trot 142 09.03.16 11:42 Сейчас в теме
(2)
только программно работать сложнее
зависит от компетенции программиста
4. Angealtor 32 09.03.16 11:50 Сейчас в теме
Под vbs-скриптом имел в виду что-то в виде такого:

Функция getIPAddress() 
Попытка
 sc=Новый COMОбъект("MSScriptControl.ScriptControl"); 
 sc.language="VBscript"; 
 strFunc="function getIPAddress() 
| Set objShell = CreateObject (""WSCript.Shell"") 
| Set objWshScriptExec = objShell.Exec(""C:\GETTSCIP.exe"") 
| Set objStdOut = objWshScriptExec.StdOut 
| While Not objStdOut.AtEndOfStream 
|    strLine = objStdOut.ReadLine 
|    If InStr(strLine,""WTSClientAddress"") Then 
|      getIPaddress = Trim(Right(strLine, Len(strLine) - InStr(strLine,"":""))) 
|    End If 
| Wend 
|End Function";

sc.addCode(strFunc); 
Исключение Возврат("0") КонецПопытки; 

Возврат sc.run("getIPAddress"); 
КонецФункции
Показать


В этом примере тоже используется внешний файл. Но надеюсь на помощь в поиске решения именно такого плана.
5. Xershi 963 09.03.16 11:53 Сейчас в теме
(4) Angealtor, т.е. вы хотите не использовать внешний файл и внешнюю компоненту?
6. Angealtor 32 09.03.16 12:01 Сейчас в теме
(5) Xershi, Да. Под "неиспользованием внешней компоненты" имел в виду, что не использовать что-то нестандартное, что нужно доустанавливать, а стандартные объекты и классы Windows.
7. Xershi 963 09.03.16 12:25 Сейчас в теме
(6) Angealtor, тогда я вам уже ответил в (2). Хотя может есть какие-то методы через ком-объекты, это уже погуглите.
9. Fox-trot 142 10.03.16 07:42 Сейчас в теме
(6) Angealtor, https://blogs.msdn.microsoft.com/alejacma/2008/03/04/how-to-get-the-logged-on-user-with-wmi-vbscript/
использован vbscript. там оч много чего понаписано, а если кратко , то
Function Get-LoggedOn ($Comp = $env:computername)
{
Get-WmiObject -computername $Comp -query `
"Sel ect * fr om Win32_LogonSession where logontype = 2 or logontype = 10" |
foreach {Get-WmiObject -computername $Comp -query `
"Associators of {Win32_LogonSession.LogonId=$($_.logonid)} Where AssocClass=Win32_LoggedOnUser Role=Dependent"}
}
10. Angealtor 32 10.03.16 15:14 Сейчас в теме
(9) Fox-trot, спасибо. Посмотрю, попробую разобраться.
8. Fox-trot 142 09.03.16 12:30 Сейчас в теме
если по-быстрому то мона так
1. netstat -n > list.txt
2. парсим list.txt на наличие локального ip и порта RDP
11. DWZ2 11.03.16 06:39 Сейчас в теме
(8) Fox-trot,

А если пользователей несколько? Как мы узнАем, какой IP из них наш?
12. nbv8608 1 28.12.16 04:22 Сейчас в теме
У себя сделал так, может кому пригодится:

&НаКлиенте
Процедура Команда1(Команда)
	 	WshShell = Новый COMОбъект("WScript.Shell");
	WshSysEnv = WshShell.Environment("Process");
	ИмяКомпьютера = WshSysEnv.Item("CLIENTNAME"); 
	АдресКомпьютера = ПолучитьIpАдресПКПоИмениХоста(ИмяКомпьютера);
КонецПроцедуры

&НаКлиенте
Функция ПолучитьIpАдресПКПоИмениХоста(АдресХоста) Экспорт 
    
   Результат = "127.0.0.0";
    oLoc = Новый COMОбъект("WbemScripting.SWbemLocator");
    oSrv = oLoc.ConnectServer(0,"/root/cimv2");
    ePng = oSrv.ExecQuery("SEL ECT * FR OM Win32_PingStatus WHERE Address = """ + АдресХоста + """");
    Для Каждого СтатусХоста из ePng Цикл 
        Результат = СтатусХоста.ProtocolAddress;
    КонецЦикла;
    
    Возврат Результат;
    
КонецФункции
Показать
Алексей_mir2mb; +1 Ответить
14. androgin 02.10.18 15:55 Сейчас в теме
(12) Произошла исключительная ситуация (SWbemLocator): Сервер RPC недоступен
13. user882910 19.12.17 12:24 Сейчас в теме
Здравствуйте . Подскажите пожалуйста как можно определить ip удаленного рабочего стола . Тема така: мошенники звоня представляются, мол вы торговали на той то бирже ее счета арестовали хотим вернуть вам деньги просят установить программу AnyDesk . Вот хотелось бы подловить гадав. Может скрипт им какой.
15. пользователь 14.08.19 10:25
Сообщение было скрыто модератором.
...
Оставьте свое сообщение
Вакансии
Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству

Автор новостей об 1С, налогах и бухучете на INFOSTART.RU
Санкт-Петербург
По совместительству

Программист 1С
Екатеринбург
зарплата от 50 000 руб.
По совместительству

Ведущий разработчик 1С (техлид внутреннего учета)
Новосибирск
зарплата от 230 000 руб.
Полный день

Программист 1С
Рязань
зарплата от 150 000 руб. до 250 000 руб.
Полный день