2013-08-16 30 views
0

我在一臺PC上運行的WINSERVICE,它連接到服務器,所以我們可以把一個命令,這個winservcice。Programly檢測,如果我的機器上遠程訪問

一個命令應該是:isConnectedRemotly:如果有人從其他機器(遠程),以及其用戶名(它連接會話的用戶名)

連接到本機應該返回true我該怎麼辦那?

回答

0

這取決於...如果你的意思是「被調用進程的遠程會話下運行,你可以obtain the session id for the processget info for the session,以檢查它是否是一個遠程會話,喜歡的東西:

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

爲什麼需要第二個「WTSQuerySessionInformation」呼叫(WTSUserName)2,NO,我想知道:「是登錄到遠程會話的用戶名」 – Joseph

+0

第一次調用'WTSQuerySessionInformation()'與參數-3 ='WTSIsRemoteSession'確定用戶是否登錄到遠程會話中,第二次調用檢索用戶名('WTSUserName') –