服务程序中如何得到当前登陆用户名
2012-11-19 16:31
399 查看
//根据进程名称得到进程token BOOL GetTokenByName(HANDLE &hToken,LPSTR lpName) { if(!lpName) { return FALSE; } HANDLE hProcessSnap = NULL; BOOL bRet = FALSE; PROCESSENTRY32 pe32 = {0}; hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (hProcessSnap == INVALID_HANDLE_VALUE) return (FALSE); pe32.dwSize = sizeof(PROCESSENTRY32); if (Process32First(hProcessSnap, &pe32)) { do { if(!strcmp(_strupr(pe32.szExeFile),_strupr(lpName))) { HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE,pe32.th32ProcessID); bRet = OpenProcessToken(hProcess, TOKEN_ALL_ACCESS,&hToken); CloseHandle (hProcessSnap); return (bRet); } } while (Process32Next(hProcessSnap, &pe32)); bRet = TRUE; } else bRet = FALSE; CloseHandle (hProcessSnap); return (bRet); } BOOL GetCurrentUserName() { HANDLE hToken; //得到shell的token if(!GetTokenByName(hToken,"EXPLORER.EXE")) { return FALSE; } DWORD cbti = 0; PTOKEN_USER ptiUser = NULL; SID_NAME_USE snu; //取得所需空间大小 if (GetTokenInformation(hToken, TokenUser, NULL, 0, &cbti)) { CloseHandle(hToken); return FALSE; } //分配空间 ptiUser = (PTOKEN_USER) HeapAlloc(GetProcessHeap(), 0, cbti); if(!ptiUser) { CloseHandle(hToken); return FALSE; } //取得token信息 if (!GetTokenInformation(hToken, TokenUser, ptiUser, cbti, &cbti)) { CloseHandle(hToken); HeapFree(GetProcessHeap(), 0, ptiUser); return FALSE; } char szUser[50]; char szDomain[50]; DWORD nUser = 50; DWORD nDomain = 50; //根据用户的sid得到用户名和domain if (!LookupAccountSid(NULL, ptiUser->User.Sid, szUser, &nUser, szDomain, &nDomain, &snu)) { CloseHandle(hToken); HeapFree(GetProcessHeap(), 0, ptiUser); return FALSE; } OutputDebugString(szUser); OutputDebugString("\r\n"); OutputDebugString(szDomain); OutputDebugString("\r\n"); CloseHandle(hToken); HeapFree(GetProcessHeap(), 0, ptiUser); return TRUE; }
相关文章推荐
- 服务程序中如何得到当前登陆用户名
- 服务程序中如何得到当前登陆用户名(ZZ)
- 服务程序中如何得到当前登陆用户名
- C语言获取当前登陆的用户名
- 如何用js得到当前页面的url信息方法(JS获取当前网址信息)
- 如何远程获取MAC 地址和序列号,当前登录用户名
- 如何在c#中得到当前目录的路径
- shiro标签获取当前登陆的用户名问题
- 如何用js得到当前页面的url信息方…
- PHP如何得到当前日期与时间(一)
- GetWindowsName如何得到当前操作系统的名字及版本
- linux下如何修改weblogic console登陆的用户名和密码
- 如何用js得到当前页面的url信息方法(JS获取当前网址信息)
- 如何得到当前的系统日期以及对当前的系统日期进行30天的加值!
- [Java] 如何通过当前时间得到日期,月份,年
- oracle如何获取当前登录的用户名
- unity手游开发--如何得到当前物体播放的动画
- linux 下如何查看和踢除正在登陆的其它用户 ==>Linux下用于查看系统当前登录用户信息的4种方法
- 关于如何快速清除,登陆文件共享,域等时缓存的认证用户名和密码的方法
- 关于Oracle数据库如何查询非当前用户名命名空间下的表不需要写ower直接from 表名