管理远程登入的session

finix 2011-03-10 08:11:31
请问怎么得到本机上有多少远程登入的session?
NetSessionEnum似乎不行
...全文
81 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jyh_baoding 2011-03-11
  • 打赏
  • 举报
回复
系统不同,方法不同
oyljerry 2011-03-11
  • 打赏
  • 举报
回复
#include <windows.h>
#include <vector>
#include <string>

#include <WtsApi32.h>
#pragma comment(lib, "WtsApi32.lib")

//
typedef std::basic_string<TCHAR> tstring;

// Get current sessions
bool EnumSessionIds(std::vector<DWORD>& list)
{
list.clear();

WTS_SESSION_INFO *pSI = NULL;
DWORD dwSICount;

BOOL bRes = WTSEnumerateSessions(WTS_CURRENT_SERVER_HANDLE, 0, 1, &pSI, &dwSICount);
if (bRes == 0)
return false;

for (unsigned int i = 0; i < dwSICount; ++i)
list.push_back(pSI[i].SessionId);

WTSFreeMemory(pSI);

return true;
}

// Get username from session id
bool GetSessionUserName(DWORD dwSessionId, tstring& username)
{
LPTSTR pBuffer = NULL;
DWORD dwBufferLen;

BOOL bRes = WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE, dwSessionId, WTSUserName, &pBuffer, &dwBufferLen);

if (bRes == FALSE)
return false;

username = pBuffer;
WTSFreeMemory(pBuffer);

return true;
}

// Get domain name from session id
bool GetSessionDomain(DWORD dwSessionId, tstring& domain)
{
LPTSTR pBuffer = NULL;
DWORD dwBufferLen;

BOOL bRes = WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE, dwSessionId, WTSDomainName, &pBuffer, &dwBufferLen);

if (bRes == FALSE)
return false;

domain = pBuffer;
WTSFreeMemory(pBuffer);

return true;
}


int _tmain(int argc, _TCHAR* argv[])
{
std::vector<DWORD> sessionIds;
bool bRes = EnumSessionIds(sessionIds);
if (!bRes)
{
// error
return 0;
}

// enum sessions
std::vector<DWORD>::iterator iter;
for (iter = sessionIds.begin(); iter != sessionIds.end(); iter++)
{
// print session domain
tstring domain;
GetSessionDomain(*iter, domain);
_tprintf(_T("Session Domain = %s\n"), domain.c_str());

// print session username
tstring username;
GetSessionUserName(*iter, username);
_tprintf(_T("Session UserName = %s\n"), username.c_str());
}

return 0;
}
jwybobo2007 2011-03-10
  • 打赏
  • 举报
回复
WTSEnumerateSessions?

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧