hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, pWtspi[i].ProcessId/*pe32.th32ProcessID*/ );
if( hProcess == NULL ){
CloseHandle( hProcess );
}else{
GetModuleFileNameEx(hProcess,NULL,(LPWSTR)&szProcessName,MAX_PATH);
CloseHandle( hProcess );
}
这是我取得进程文件名的代码,通过枚举获取的进程PID等信息。
WTSEnumerateProcesses(WTS_CURRENT_SERVER_HANDLE ,0, 1, &pWtspi, &dwCount)问题:
编译调试程序正常,用户名和文件路径、优先级都能获取,但单独运行(在文件夹中双击)程序则取不到部分进程的文件路径和优先级。
在开发环境中运行程序也能取得全部数据。
解决方案 »
- 在MDI程序中,创建了多个文档,怎么在一个窗口同时显示多个窗口
- 关于CProgressCtrl进度条的问题
- 急:m_wndList.Create(this, 1234, CRect(0,0,200,400));这句代码在debug下错误,但Release下可以?
- 谁有好的免费的vc报表工具
- 一个继承于CWND的控件类。如何动态创建并设定其位置。
- 关于Access数据库的连接,谢谢帮忙!!!!!
- 对话框类文件 疑问?
- 序列化时如何将数据读进来,请看代码。。
- 一个关于unix进程通讯方面的问题
- 请教:关于网络函数 MigrateWinsockConfiguration ??
- 我创建了一个表格,但不知数据怎样保存到文件
- 大家国际代购过笔记本电脑么?给点意见哈
BOOL EnableDebugPrivilege()
{
HANDLE hToken;
BOOL fOk=FALSE;
if(OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken))
{
TOKEN_PRIVILEGES tp;
tp.PrivilegeCount=1;
if(!LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&tp.Privileges[0].Luid))
printf("Can't lookup privilege value.\n");
tp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
if(!AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(tp),NULL,NULL))
printf("Can't adjust privilege value.\n");
fOk=(GetLastError()==ERROR_SUCCESS);
CloseHandle(hToken);
}
return fOk;
}
PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ, FALSE, pWtspi[i].ProcessId/*pe32.th32ProcessID*/ );
if( hProcess == NULL ){
CloseHandle( hProcess );
}else{
GetModuleFileNameEx(hProcess,NULL,(LPWSTR)&szProcessName,MAX_PATH);
CloseHandle( hProcess );
}查了好多资料,解决了,也贴出来。
分结楼上了,谢谢你!