WTSQuerySessionInformation по VPN

Мы пытаемся написать C ++ DLL, которая будет работать на сервере VMWare и будет возвращать IP-адрес и имя клиента (конечного пользователя).

Я использую WTSQuerySessionInformation для получения IP-адреса. Проблема заключается в том, что когда я работаю из сети компании, DLL возвращает точный IP-адрес, который сопоставляется с соответствующим именем хоста.

Но когда я вхожу из дома в VPN компании и пытаюсь сделать то же самое, он дает мне другой IP-адрес, который не имеет DNS-имени.

LPTSTR ppBuffer = NULL;
DWORD  pBytesReturned = 0;
PWTS_CLIENT_ADDRESS pWTSCA = NULL;

WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE, WTS_CURRENT_SESSION, WTSClientAddress, &ppBuffer, &pBytesReturned);

pWTSCA = (PWTS_CLIENT_ADDRESS)ppBuffer;

String^ addrStr = String::Empty;
for (int i = 2; i < 6; i++)
{
addrStr += Convert::ToString(pWTSCA->Address[i]);
if (i != 5)
addrStr += ".";
}

Есть ли способ обойти эту проблему? Я придерживаюсь правильного подхода, или есть другой способ сделать это?

Редактировать:
Если я использую WTSClientName, он возвращает IP-адрес, разделенный дефисом (как W-X-Y-Z). Не могли бы вы помочь мне понять, если я сделал что-то не так здесь? Вот код:

LPTSTR szClientName = NULL;
DWORD dwSize = 0;
String^ cliName = String::Empty;

if (WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE, WTS_CURRENT_SESSION, TSClientName, &szClientName, &dwSize))
{
cliName = gcnew String(szClientName, 0, dwSize);
}

return cliName;

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]