-
Здравствуйте! Приложение стоит на сервере и клиенты подключаются через RDP к своим рабочим столам и запускают его. Можно ли сделать так, что бы при подключении не из локальной сети (WAN) программа не запускалась. В WTS API вроде нет возможности это определить ....? задачу можно упростить: в лосальной сети копмы под линуксом. т.е. можно разрешить запуск если ОС клиента- линукс и запретить если нет.
-
имхо нет
-
> Андрей3333333 (23.02.2013 20:46:00) [0]
Файрвол, запретить подключение WAN
-
а через WTSQuerySessionInformation нельзя?
-
Начать надо с того, что попытаться дать четкое определение, где у нас Lan, а где Wan. Имхо разницы нет.
-
Интересная задача-то :) Если WTSQuerySessionInformation вернёт в том числе удалённый ip, и он 10.*, 172.16.*, 192.168.* - то это LAN, в противном случае делаем halt(0);
-
Но и это не панацея, так как в общем случае - есть и впны и прочая, прочая, прочая...
-
спасибо всем за ответы. Буду использовать WTSQuerySessionInformation.
-
Через параметры: WTSUserName WTSDomainName WTSClientName WTSClientAddress WTSClientInfo WTSSessionInfo "условно" идентифицирую принадлежит пользователь к LAN или к WAN при попытке запустить программу.
P.S. в стуктуре WTSCLIENT есть поле DeviceId ( The device ID of the network adapter.). из WAN ничего не выдает. из LAN еще не пробовал. P.P.S в стуктуре WTSINFO есть поле LARGE_INTEGER ConnectTime как его преобразовать в string -?
-
Время из LARGE_INTEGER в стринг преобразую так:
var f : large_integer; FileTime,LocalFileTime: TFileTime; SystemTime: TSystemTime; .....
f:=pWTSinfot^.ConnectTime; FileTime.dwLowDateTime:=f.LowPart; FileTime.dwHighDateTime:=f.HighPart; FileTimeToLocalFileTime(FileTime, LocalFileTime); FileTimeToSystemTime(LocalFileTime, SystemTime); DateStr:=FormatDateTime('dddd, dd MMM yyyy - hh:mm:ss:ms',SystemTimeToDateTime(SystemTime));
|