以编程方式检测我的机器是否远程访问

时间:2013-08-16 08:31:47

标签: windows winapi wmi remote-access wtsapi32

我在一台PC上运行了一个winservice,它连接到服务器,所以我们可以将命令推送到这个winservcice。

其中一个命令应该是:isConnectedRemotly:如果有人从其他机器(远程)连接到这台机器,那么它应该返回true,以及用户名(它连接到的会话用户名)

我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

这取决于......如果您的意思是“调用进程是在远程会话下运行,您可以obtain the session id for the processget info for the session检查它是否是远程会话,例如:< / p>

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);
        }