Программно определить, есть ли удаленный доступ к моей машине

У меня есть winservice, работающий на одном ПК, он подключен к серверу, чтобы мы могли отправить команду в этот winservcice.

Одна из команд должна быть: isConnectedRemotly: которая должна возвращать true, если кто-либо подключается к этой машине с другого компьютера (удаленно), и для какого имени пользователя (имя сеанса, к которому оно подключено)

Как я могу это сделать?

1 ответ

Это зависит... если вы имеете в виду "вызывающий процесс выполняется в удаленном сеансе, вы можете получить идентификатор сеанса для процесса и получить информацию для сеанса, чтобы проверить, является ли это удаленным сеансом, с чем-то вроде:

DWORD ProcessId; // filled by the calling program using GetCurrentProcessId()
DWORD SessionId, ByteCount;
LPTSTR Buffer;
if (ProcessIdToSessionId(ProcessId, &SessionId))
    if (WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE, SessionId,
                                   WTSIsRemoteSession, &Buffer, &ByteCount))
        if (WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE, SessionId,
                                       WTSUserName, &Buffer, &ByteCount))
        {   // copy away the user name in Buffer
            WTSFreeMemory(Buffer);
        }
Другие вопросы по тегам