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

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

  1. 读写分离,读写分离死锁解决方案,事务发布死锁解决方案,发布订阅死锁解决方案|事务(进程 ID *)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务

    前言:         由于网站访问压力的问题,综合分析各种因素后结合实际情况,采用数据库读写分离模式来解决当前问题.实际方案中采用“事务发布”模式实现主数据库和只读数据库的同步,其中: 发布服务器1 ...

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

    Linux下的tomcat的停止脚本shutdown.sh经常失败,造成tomcat进程没关闭.所以只能手动查找进程id,然后用kill命令来强制停止.每次都要这样查一下,然后再杀进程.感觉有点麻烦, ...

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

    进程查看 ps ax : 显示当前系统进程的列表 ps aux : 显示当前系统进程详细列表以及进程用户 ps ax|less : 如果输出过长,可能添加管道命令 less查看具体进程, 如:ps a ...

  4. CMD查看进程ID并查杀进程

    开始-运行,输入CMD打开命令行界面,输入命令netstat -ano 结束该进程C:\>taskkill /f /t /im Wiz.exe 根据进程ID杀 >taskkill /F / ...

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

    #!/bin/sh NAME='shell.php' echo $NAME ID=`ps -ef | grep "$NAME" | grep -v "$0" | ...

  6. 查看进程所用的内存(使用GetWindowThreadProcessId取得进程ID,OpenProcess打开进程和GetProcessMemoryInfo取得内存信息)

    // function GetProcessMemorySize(_sProcessName: string; var _nMemSize: Cardinal): Boolean; var l_nWn ...

  7. 使用kill -9 进程ID杀死jps中进程

  8. win32进程概念之句柄表,以及内核对象.

    句柄表跟内核对象 一丶什么是句柄表什么是内核对象. 1.句柄表的生成 我们知道.我们使用CreateProcess 的时候会返回一个进程句柄.以及线程句柄. 其实在调用CreateProcess的时候 ...

  9. 为应用程序池 ''DefaultAppPool'' 提供服务的进程意外终止。进程 ID 是 ''xxx''问题的解决方法

    网上提供了很多办法,都未解决. 解决过程一波三折,依次用了下列方法: 1.解决办法 点击“开始”-“控制面板”-“管理工具”-“组件服务”-“计算机”-“我的电脑”-“DCOM”选项, 选择其下的“I ...

随机推荐

  1. JSON基础学习

    定义 JSON时轻量级的文本数据交换格式,独立于语言,比xml更小更快更易解析 JSON解析器和JSON库支持不同的编程语言 4个基本规则 1. 并列数据间用 逗号, 2. 映射用冒号表示 3. 并列 ...

  2. 2015第6周三ztree的使用

    今天第一次真正在开发中使用了ztree组件,在实践过程体会了从生到熟的乐趣,从开始看不太懂ztree的api到后面熟悉理解其API布局,学习其中的各demo,感觉很不错,简单记录下使用ztree的经验 ...

  3. Baidu Sitemap Generator插件使用图解教程

    这两天因为百度对本博客文章收录更新很慢,一直在网络查找真正的原因和解决方法.最终发现了柳城开发的Baidu Sitemap Generator WordPress插件,最终效果如果还需要验证一段时间. ...

  4. Node.js log1: ERR can not find module express

    1.win7下创建项目中提示输入的命令:cd project&&npm install    安装失败 输入上面提示的命令,预期结果:自动安装了依赖 ejs 和 express,失败提 ...

  5. C errors recods

    error: unterminated #ifndef 1,权限问题 2,少了#endif

  6. OpenSuSE zypper repo及Desktop媒体播放器设置 for OpenSuSE12.

    1.禁用官方源和DVD光盘源,启用中国大陆源 使用DVD光盘安装好openSUSE 12.2之后,软件安装源中默认存在一个名称为”openSUSE-12.2-1.6″的软件源,这个源的URL实际上是指 ...

  7. hdu4334 Trouble 合并集合可以降低复杂度阿啦啦

    我觉得这一题方法很好的,但是之前完全没有碰到过,也没有想到,这么简单直接降低复杂度的方法 先将两个集合合并成1个集合,合并两个(s1,s2),即每个集合里n^2个数,还剩一个n个数的集合 这样还剩超时 ...

  8. #include <boost/asio.hpp>

    TCP服务端和客户端 TCP服务端 #include <iostream> #include <stdlib.h> #include <boost/asio.hpp> ...

  9. java的静态代理

    解决这个问题:在多个模块要插入一段功能,比方,在不同业务处理模块中,都须要检查用户是否登录,假设不使用代理的话,每添加一个模块,就须要添加非常多代码. 比方,除了推断是否登录,假设还须要添加一个记录日 ...

  10. About Health Monitor Checks

    About Health Monitor Checks Health Monitor checks (also known as checkers, health checks, or checks) ...