1. Angealtor 19 09.03.16 11:32 Сейчас в теме

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

Просмотрел несколько тем на мисте:
http://www.forum.mista.ru/topic.php?id=524473
http://www.forum.mista.ru/topic.php?id=481072
Сейчас пользуюсь компонентой SendToLocalHost. Работает отлично, но хотелось решения без использования компонент, например, через vbs-скрипт. Кто-нибудь сталкивался с другими решениями такой задачи? Нужно тоже самое, что возвращает компонента SendToLocalHost и я так понимаю, что это значение одного из полей виндового класса WTSQuerySessionInformation.
Ответы
Избранное Подписка Сортировка: Древо
2. Xershi 523 09.03.16 11:38 Сейчас в теме
(1) Angealtor, можно использовать компоненту работы с пауршел. У меня публикация есть. Или зачем вообще скрипт использовать? Чтобы заказчику не нужно было ставить компоненту? Тогда сохранить сценарий в макет и потом его запускать, что тоже самое, только программно работать сложнее.
3. Fox-trot 95 09.03.16 11:42 Сейчас в теме
(2)
только программно работать сложнее
зависит от компетенции программиста
4. Angealtor 19 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 523 09.03.16 11:53 Сейчас в теме
(4) Angealtor, т.е. вы хотите не использовать внешний файл и внешнюю компоненту?
6. Angealtor 19 09.03.16 12:01 Сейчас в теме
(5) Xershi, Да. Под "неиспользованием внешней компоненты" имел в виду, что не использовать что-то нестандартное, что нужно доустанавливать, а стандартные объекты и классы Windows.
7. Xershi 523 09.03.16 12:25 Сейчас в теме
(6) Angealtor, тогда я вам уже ответил в (2). Хотя может есть какие-то методы через ком-объекты, это уже погуглите.
9. Fox-trot 95 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 19 10.03.16 15:14 Сейчас в теме
(9) Fox-trot, спасибо. Посмотрю, попробую разобраться.
8. Fox-trot 95 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;
    КонецЦикла;
    
    Возврат Результат;
    
КонецФункции
Показать
14. androgin 02.10.18 15:55 Сейчас в теме
(12) Произошла исключительная ситуация (SWbemLocator): Сервер RPC недоступен
13. user882910 19.12.17 12:24 Сейчас в теме
Здравствуйте . Подскажите пожалуйста как можно определить ip удаленного рабочего стола . Тема така: мошенники звоня представляются, мол вы торговали на той то бирже ее счета арестовали хотим вернуть вам деньги просят установить программу AnyDesk . Вот хотелось бы подловить гадав. Может скрипт им какой.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Санкт-Петербург
зарплата от 110 000 руб. до 120 000 руб.
Полный день

Аналитик 1С
Санкт-Петербург
зарплата от 80 000 руб.
Полный день

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

Программист 1С
Нижний Новгород
зарплата до 120 000 руб.
Полный день

Программист 1С
Волгоград
зарплата от 45 000 руб. до 90 000 руб.
Полный день