Windows 通过编程检测我的机器是否被远程访问

Windows 通过编程检测我的机器是否被远程访问,windows,winapi,wmi,remote-access,wtsapi32,Windows,Winapi,Wmi,Remote Access,Wtsapi32,我有一个winservice在一台PC上运行,它连接到服务器,所以我们可以将命令推送到这个winservcice 其中一个命令应该是:isConnectedRemotly:如果有人从其他计算机(远程)连接到此计算机,则该命令应该返回true,并且该命令的用户名(它连接到的会话用户名) 我该怎么做?这取决于。。。如果您的意思是“调用进程正在远程会话下运行,您可以使用以下方法检查它是否是远程会话: DWORD ProcessId; // filled by the calling program u

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

其中一个命令应该是:isConnectedRemotly:如果有人从其他计算机(远程)连接到此计算机,则该命令应该返回true,并且该命令的用户名(它连接到的会话用户名)

我该怎么做?

这取决于。。。如果您的意思是“调用进程正在远程会话下运行,您可以使用以下方法检查它是否是远程会话:

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

为什么需要第二个“WTSQuerySessionInformation”(WTSUserName)调用?不,我想知道:“用户名是否登录到远程会话”第一个调用
WTSQuerySessionInformation()
,参数为-3=
WTSIsRemoteSession
确定用户是否登录到远程会话,第二个调用检索用户名(
WTSUserName