社区
进程/线程/DLL
帖子详情
如何根据进程句柄获取该进程的用户名
duyalong
2012-01-13 04:53:43
我在多用户系统中通过枚举系统进程获取explorer.exe进程句柄的时候,成功获取了explorer.exe的句柄,但是由于多个用户都有explorer.exe进程,因此,得到的进程并不是当前用户对应的进程。
求如何通过获得的explorer.exe进程句柄来得到开启该进程的用户名呢
...全文
295
4
打赏
收藏
如何根据进程句柄获取该进程的用户名
我在多用户系统中通过枚举系统进程获取explorer.exe进程句柄的时候,成功获取了explorer.exe的句柄,但是由于多个用户都有explorer.exe进程,因此,得到的进程并不是当前用户对应的进程。 求如何通过获得的explorer.exe进程句柄来得到开启该进程的用户名呢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wangjieest
2012-01-29
打赏
举报
回复
分呢...结贴呢?
duyalong
2012-01-14
打赏
举报
回复
我使用楼上的方法成功解决了该问题,多谢!
散分结贴~
龙行天下之Sky
2012-01-13
打赏
举报
回复
CString GetProcessUserName(HANDLE hProcess)
{
HANDLE hToken = NULL;
BOOL bFuncReturn = FALSE;
CString strUserName = _T("");
PTOKEN_USER pToken_User = NULL;
DWORD dwTokenUser = 0;
TCHAR szAccName[MAX_PATH] = {0};
TCHAR szDomainName[MAX_PATH] = {0};
HANDLE hProcessToken = NULL;
if(hProcess != NULL)
{
// 提升本进程的权限
bFuncReturn = ::OpenProcessToken(hProcess,TOKEN_QUERY,&hToken);
if( bFuncReturn == 0) // 失败
{
return strUserName;
}
if(hToken != NULL)
{
::GetTokenInformation(hToken, TokenUser, NULL,0L, &dwTokenUser);
if(dwTokenUser>0)
{
pToken_User = (PTOKEN_USER)::GlobalAlloc( GPTR, dwTokenUser );
}
if(pToken_User != NULL)
{
bFuncReturn = ::GetTokenInformation(hToken, TokenUser, pToken_User, dwTokenUser, &dwTokenUser);
}
if(bFuncReturn != FALSE && pToken_User != NULL)
{
SID_NAME_USE eUse = SidTypeUnknown;
DWORD dwAccName = 0L;
DWORD dwDomainName = 0L;
PSID pSid = pToken_User->User.Sid;
bFuncReturn = ::LookupAccountSid(NULL, pSid, NULL, &dwAccName,
NULL,&dwDomainName,&eUse );
if(dwAccName>0 && dwAccName < MAX_PATH && dwDomainName>0 && dwDomainName <= MAX_PATH)
{
bFuncReturn = ::LookupAccountSid(NULL,pSid,szAccName,&dwAccName,
szDomainName,&dwDomainName,&eUse );
}
if( bFuncReturn != 0)
strUserName = szAccName;
}
}
}
if (pToken_User != NULL)
{
::GlobalFree( pToken_User );
}
if(hToken != NULL)
{
::CloseHandle(hToken);
}
return strUserName;
}
看看这个
GIS_wudi
2012-01-13
打赏
举报
回复
http://blog.csdn.net/zzz3265/article/details/1883208
看看这个帖子对你有没有帮助
C#如何
获取
进程
的
用户名
最近在学C#网络编程,写了一个Windows的资源管理器,其中有需要获得
进程
的
用户名
,Process类中没有集成好的方法和属性,于是在网上找了找大神们的帖子,借鉴了一下! 需要添加对 System.Management.dll 的引用 using System.Diagnostics; using System.Management; static void Main(string
通过VB访问API以
获取
Windows
进程
的
用户名
Windows API(Application Programming Interface)是一系列预先定义好的函数、协议和工具的集合,它们可以被软件开发者用于与Windows操作系统进行交互。开发者可以利用API函数来控制和管理各种系统资源,比如
进程
、文件、网络连接等。在Visual Basic(VB)中,通过声明API函数,开发者可以调用这些底层的服务来扩展VB应用程序的功能。声明API函数需要使用VB的Declare关键字来指定函数的名称、返回类型以及参数类型。
c# 之API
获取
进程
用户名
。
正在做一个小程序需要
获取
进程
用户名
,先在网上搜索得到下面代码。。可以用,但是效率之低下令人发指!
private static string GetProcessUserName(int pID)
{
string text1 = null;
SelectQuery query1 = new SelectQuery("Select * from Win32_Process WHERE processID=" + p
通过
进程
id
获取
用户名
可以看到,User name这一栏里面,有NT AUTHORITY\SYSTEM,NT AUTHORITY\LOCAL SERVICE,HKS\1909等。不同的
用户名
拥有不同的权限。下面的代码
获取
的
用户名
与ProcessHacker的结果有一点不同。在一个样本中看到的:通过
进程
id
获取
对应的
用户名
,来确定需要注入的目标
进程
。实际结果中SYSTEM对应的是HKS$(HKS是设备名称,后面跟着'$‘,来表示SYSTEM);其他的LOCAL SERVICE,1909是一样的。
【API】
获取
所有
进程
的
用户名
#include #pragma comment(lib,"WtsApi32.lib") SID_NAME_USE sUse; WTS_PROCESS_INFO *pProInfo,*pTemp; DWORD dwRes; DWORD dwSize = MAX_PATH; WCHAR wzUserName[MAX_
进程/线程/DLL
15,465
社区成员
49,169
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章