Te dejo el codigo en C++ como lo tengo implementado.
Código Delphi
[-]DWORD IDSes=0;
LPTSTR pData = NULL;
DWORD cbReturned = 0;
char Cliente[150],IP[20];
AnsiString Nombre="";
ProcessIdToSessionId(GetCurrentProcessId(),&IDSes);
if( WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE, IDSes, WTSClientName , &pData, &cbReturned) )
if(WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE, IDSes, WTSSessionAdressV4 , &pData, &cbReturned) )
WTSFreeMemory(pData);
Te comento depenendiendo de la version de Wtsapi32.dll que tengas y de la version de compilador, las opciones de "llamado" a esta funcion puede variar.
Te dejo
esta liga para que puedas checar toda la informacion. Espero te sirva.
NOTA IMPORTANTE: El valor de WTSSessionAdressV4 solo es soportado a partir de Win7 y de Win 2008 server R2