获取当前系统登录用户名(包括以管理员权限启动也能获取到)

24 篇文章 2 订阅

当程序以管理员权限启动后,如果需要获取当前系统登录非管理员用户名,大部分方法(如 GetUserName)获取到的都是管理员的用户名,以下是获取当前登录用户方法。直接上代码:

#include <windows.h>

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

#include <string>
using namespace std;

// 获取当前登录用户
bool GetSessionUserName(string& strUserName)
{
	DWORD dwSessionId = WTSGetActiveConsoleSessionId();

	LPTSTR pBuffer = NULL;
	DWORD dwBufferLen;
	BOOL bRes = WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE, dwSessionId, WTSUserName, &pBuffer, &dwBufferLen);
	if (bRes == FALSE)
	{
		return false;
	}

	strUserName = pBuffer;

	WTSFreeMemory(pBuffer);

	return true;
}


int main()
{
	string strUser;
	if (GetSessionUserName(strUser))
	{
		printf("当前登录用户:%s\n", strUser.c_str());
	}
	else
	{
		printf("获取当前登录用户失败\n");
	}

	system("pause");

    return 0;
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值