如何获得一个进程的Session,比如我用终端登录启动的程序的session就和在本机启动的Session不一样的。 如何获得一个进程的Session,比如我用终端登录启动的程序的session就和在本机启动的Session不一样的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 The OpenProcessToken function opens the access token associated with a process.BOOL OpenProcessToken( HANDLE ProcessHandle, DWORD DesiredAccess, PHANDLE TokenHandle); #include "stdafx.h"#include <sstream>#include <atlsecurity.h>#include <Tlhelp32.h>#pragma comment(lib, "Kernel32.lib")int _tmain(int argc, _TCHAR* argv[]){ HANDLE hSnap = NULL; hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (hSnap == INVALID_HANDLE_VALUE) return FALSE; PROCESSENTRY32 pe32; ZeroMemory(&pe32,sizeof(pe32)); pe32.dwSize = sizeof(pe32); std::ostringstream oss; if (Process32First(hSnap, &pe32)) { do { HANDLE hProcess=OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,false,pe32.th32ProcessID); if(hProcess ==NULL) { oss<<"OpenProcess "<<pe32.th32ProcessID<<" error"<<std::endl; } else { CAccessToken token; token.GetProcessToken(TOKEN_QUERY,hProcess); CSid sid; token.GetUser(&sid); oss<<"process "<<pe32.th32ProcessID<<" user account "; if(sid.IsValid()) oss<<sid.AccountName(); oss<<std::endl; CloseHandle(hProcess); } ZeroMemory(&pe32,sizeof(pe32)); pe32.dwSize = sizeof(pe32); } while ( Process32Next (hSnap, &pe32)); } CloseHandle (hSnap); printf(oss.str().c_str()); return 0;}//build environment: VC.NET 2003, Windows XP SP1 怎么设置串口的波特率为640k? TChart显示点线曲线模式 点击ComboBox控件是传递给父窗口的消息是什么? DShow Filter计算音量 为什么我在自己的VIEW中SendMessage(WM_COMMAND,ID_FILE_OPEN)不能触发默认的打开? IDC_HAND SPI 编译问题。 菜鸟的遍历问题 WM_USER的值是多少? 【求助】关于ADO执行和返回记录集的处理过程的疑问 winsock模型问题——写一个ftp客户端组件,采用什么模型好?? 多文当界面,如何创建子窗口,如果子窗口存在,将它激活??再加100分了
HANDLE ProcessHandle,
DWORD DesiredAccess,
PHANDLE TokenHandle
);
#include <sstream>
#include <atlsecurity.h>
#include <Tlhelp32.h>
#pragma comment(lib, "Kernel32.lib")int _tmain(int argc, _TCHAR* argv[])
{ HANDLE hSnap = NULL;
hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hSnap == INVALID_HANDLE_VALUE)
return FALSE;
PROCESSENTRY32 pe32;
ZeroMemory(&pe32,sizeof(pe32));
pe32.dwSize = sizeof(pe32);
std::ostringstream oss;
if (Process32First(hSnap, &pe32))
{
do
{
HANDLE hProcess
=OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,false,pe32.th32Proces
sID);
if(hProcess ==NULL)
{
oss<<"OpenProcess "<<pe32.th32ProcessID<<" error"<<std::endl;
}
else
{
CAccessToken token;
token.GetProcessToken(TOKEN_QUERY,hProcess);
CSid sid;
token.GetUser(&sid);
oss<<"process "<<pe32.th32ProcessID<<" user account ";
if(sid.IsValid())
oss<<sid.AccountName();
oss<<std::endl;
CloseHandle(hProcess);
}
ZeroMemory(&pe32,sizeof(pe32));
pe32.dwSize = sizeof(pe32);
}
while ( Process32Next (hSnap, &pe32));
}
CloseHandle (hSnap);
printf(oss.str().c_str());
return 0;
}
//build environment: VC.NET 2003, Windows XP SP1