进程序名得到进程ID和句柄与进程的公司名(使用快照和GetPeFileCompany和VerQueryValueW等函数)

WORD  GetProcessIdByName(WCHAR *processName)
{

DWORD processId = 0;
HANDLE hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(hProcessSnap==INVALID_HANDLE_VALUE)
{
return 0;
}

PROCESSENTRY32 pe32;
pe32.dwSize = sizeof(PROCESSENTRY32);

BOOL bMore=Process32First(hProcessSnap,&pe32);
if(!bMore) 
{
goto __END;
}

do 
{
if(_wcsicmp(pe32.szExeFile,processName) == 0)
{
if( _wcsicmp(pe32.szExeFile,processName/*GetProcessUserName(pe32.th32ProcessID),L"SYSTEM"*/) == 0)
{
processId = pe32.th32ProcessID;
break;
}

}
} while(Process32Next(hProcessSnap,&pe32));

__END:

CloseHandle(hProcessSnap);
return processId;
}

HANDLE ht = OpenProcess( PROCESS_ALL_ACCESS,FALSE,processId);

//进程序公司名:
#pragma comment(lib,"Version.lib")

//进程路径  名子
void GetPeFileCompany(WCHAR* file_path,WCHAR*&path) {
DWORD useless;
DWORD info_size = GetFileVersionInfoSizeW(file_path, &useless);
if (info_size > 0) {
BYTE *data_buffer = new BYTE[info_size*2/*+1*/];
ZeroMemory(data_buffer,info_size*2);
if (data_buffer!=NULL) {
if (GetFileVersionInfoW(file_path, 0, info_size*2, data_buffer)) {
void* data_ptr;
UINT data_len;
if (VerQueryValueW(data_buffer, L"\\VarFileInfo\\Translation", &data_ptr, &data_len)) {
const WORD* ver_data = reinterpret_cast<const WORD*>(data_ptr);
WCHAR fp_key[MAX_PATH]={0};
wsprintf(fp_key,L"\\StringFileInfo\\%04x%04x\\CompanyName",
ver_data[0], ver_data[1]);
if(VerQueryValueW(data_buffer, fp_key, &data_ptr, &data_len)) {
path = new WCHAR[data_len];
memcpy(path,data_ptr,data_len*2);
if (data_buffer != NULL)
{
delete []data_buffer;
data_buffer = NULL;
}
}
}
}
}
}
}
WCHAR *ppp = NULL;
GetPeFileCompany(tp.GetBuffer(),ppp);
AfxMessageBox(ppp);
if (ppp != NULL)
{
delete []ppp;
ppp = NULL;
}

http://blog.csdn.net/yjwffgip456/article/details/11079823

时间: 2024-12-29 11:13:33

进程序名得到进程ID和句柄与进程的公司名(使用快照和GetPeFileCompany和VerQueryValueW等函数)的相关文章

CMD查看进程ID并查杀进程

开始-运行,输入CMD打开命令行界面,输入命令netstat -ano 结束该进程C:\>taskkill /f /t /im Wiz.exe 根据进程ID杀 >taskkill /F /PID pid netstat -ano | findstr "80" (注80是你想要看查看的端口号) tasklist 看某个进程具体是哪个进程tasklist | findstr "80" (注 80是进程的id即PID)具体对应的行是协议 本地地址 外部地址 状

linux -- 进程的查看、进程id的获取、进程的杀死

进程查看 ps ax : 显示当前系统进程的列表 ps aux : 显示当前系统进程详细列表以及进程用户 ps ax|less : 如果输出过长,可能添加管道命令 less查看具体进程, 如:ps ax|grep XXX(XXX为进程名称) 获取进程id shell获取进程ID的方法: ps -A |grep "cmdname"| awk '{print $1}' pidof "cmdname" pgrep "cmdname" 这三种在bash和

Linux下查找进程id并强制停止进程的脚本

Linux下的tomcat的停止脚本shutdown.sh经常失败,造成tomcat进程没关闭.所以只能手动查找进程id,然后用kill命令来强制停止.每次都要这样查一下,然后再杀进程.感觉有点麻烦,所以就把这个动作写在了脚本里面. 一.思路 这个脚本其实就2步,先获取进程id,然后 kill 掉这个进程. (1)获取进程id的方法 这个可以用 awk命令来获取 ps -ef | grep 你的进程 | grep -v grep | awk '{print $2}' 这里要把这个grep这个用

使用Shell脚本查找程序对应的进程ID,并杀死进程

#!/bin/sh NAME=$1echo $NAMEID=`ps -ef | grep "$NAME" | grep -v "$0" | grep -v "grep" | awk '{print $2}'`echo $IDecho "---------------"for id in $IDdokill -9 $idecho "killed $id"doneecho "-------------

【转】iis解决应用程序池**提供服务的进程意外终止进程ID是**。进程退出代码是&#39;0x80&#39;

转自:http://blog.sina.com.cn/s/blog_56a68d5501013xdd.html 我们公司旗下的红黑互联会遇到这种问题 事件类型: 警告事件来源: W3SVC事件种类: 无事件 ID: 1009日期: 事件: XX:XX:XX用户: XX计算机: XXXX描述:为应用程序池 XXXXX 提供服务的进程意外终止.进程 ID 是 XXXX.进程退出代码是 0x80.有关更多信息,请参阅在 asp">http://go.microsoft.com/fwlink/ev

为应用程序池 &#39;&#39;DefaultAppPool&#39;&#39; 提供服务的进程意外终止。进程 ID 是 &#39;&#39;xxx&#39;&#39;问题的解决方法

网上提供了很多办法,都未解决. 解决过程一波三折,依次用了下列方法: 1.解决办法 点击“开始”-“控制面板”-“管理工具”-“组件服务”-“计算机”-“我的电脑”-“DCOM”选项, 选择其下的“IIS ADMIN SERVICE”,右健选择“属性”,找到“安全”,在“启动和激活权限”中编辑“自定义”,添加帐号“Network Service”, 给该帐号赋予“本地启动”和“本地激活”的权限,重新启动IIS,(点“开始”-“运行”-“CMD”,点确定,然后运行IISRESET) 注:没有能够解

Linux 进程(二):进程关系及其守护进程

进程关系 进程组 进程组是一个或多个进程的集合.通常,它们是在同一作业中结合起来的,同一进程组中的各进程接收来自同一终端的各种信号,每个进程组有一个唯一的进程组ID.每个进程组有一个组长进程,该组长进程的ID等于进程组ID.从进程组创建开始到最后一个进程离开为止的时间称为进程组的生命周期. #include <unistd.h> pid_t getpgrp(void); 返回值:调用进程的进程组ID int setpgid(pid_t pid, pid_t pgid); 返回值:成功,返回0:

jstack:将Process Explorer中看到的进程ID做16进制转换,到ThreadDump中加上0x 前缀即能找到对应线程(转)

原文链接:http://www.iteye.com/topic/1133941 症状: 使用Eclipse win 64位版本,indigo及kepler都重现了,使用tomcat 6.0.39,jdk1.6.u45及1.7u45均尝试了,也重现. 重现步骤很简单,使用debug模式启动时较容易出来,debug启动tomcat,(我的是webapp)然后在页面上随便点点即发现eclipse僵死,且任何从浏览器发出的请求都卡住不能被接收执行. 1.然后从任务管理器直接杀掉eclipse对应的jav

枚举Windows系统服务,通过进程ID取服务名

 //枚举Windows系统服务 //使用到的函数以及MSDN的说明如下: //1.OpenSCManager说明 //http://msdn.microsoft.com/en-us/library/windows/desktop/ms684323(v=vs.85).aspx //2.EnumServicesStatusEx说明 //http://msdn.microsoft.com/en-us/library/windows/desktop/ms682640(v=vs.85).aspx /