如何在NT下获取进程的路径(增补).doc_第1页
如何在NT下获取进程的路径(增补).doc_第2页
如何在NT下获取进程的路径(增补).doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

如何在NT下获取进程的路径(增补).txt爱情就像脚上的鞋,只有失去的时候才知道赤脚走路是什么滋味骗人有风险,说慌要谨慎。不要爱上年纪小的男人,他会把你当成爱情学校,一旦学徒圆满,便会义无反顾地离开你。如何在NT下获取进程的路径(增补)获取NT中系统进程的路径天津 赵春生下载源代码一、程序说明最近整理文档,发现以前写的如何在NT下获取进程的路径一文中还有个问题没有解决:原文中的程序无法获取系统进程的路径,如:csrss.exe。记得VCKBASE上有位网友说过一个方法:“给枚举的进程增加SE_DEBUG_NAME权限即可”,于是在网上找了些资料,解决了原文中的问题。这里要特别感谢那位名叫rovershen的网友!我自定义了一个函数,用来赋予进程指定的权限(本例为SE_DEBUG_NAME): BOOL EnablePrivilege(HANDLE hToken,LPCSTR szPrivName)TOKEN_PRIVILEGES tkp;LookupPrivilegeValue( NULL,szPrivName,&tkp.Privileges0.Luid );/修改进程权限tkp.PrivilegeCount=1;tkp.Privileges0.Attributes=SE_PRIVILEGE_ENABLED;AdjustTokenPrivileges( hToken,FALSE,&tkp,sizeof tkp,NULL,NULL );/通知系统修改进程权限return( (GetLastError()=ERROR_SUCCESS) );通过OpenProcessToken函数获得进程(本例为自身进程)访问令牌的句柄,然后调用此函数后就可以像原文那样打开目标进程获取路径了。可以看到:本方法已经成功获取了系统进程csrss.exe的路径。二、具体实践 / *ShowProcessPath 2.0 *版权所有 (C) 2005 赵春生 *2005.09.02 * * *本程序适用于:WinNT *代码在Win2000P+SP4 + VC6+SP6测试通过*/#include #include #include PSAPI.H#pragma comment( lib, PSAPI.LIB )/自定义函数:赋予指定特权。这里用来提升程序权限。BOOL EnablePrivilege(HANDLE hToken,LPCSTR szPrivName);int main(void)DWORD processid1024,needed,processcount,i;HANDLE hProcess;HMODULE hModule;char pathMAX_PATH = ,temp256;HANDLE hToken;printf(ShowProcessPath 2.0 with Process Status APInn);if ( OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken) )if (EnablePrivilege(hToken,SE_DEBUG_NAME)EnumProcesses(processid, sizeof(processid), &needed);processcount=needed/sizeof(DWORD);for (i=0;iprocesscount;i+)hProcess=OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, false, processidi);if (hProcess)EnumProcessModules(hProcess, &hModule, sizeof(hModule), &needed);GetModuleFileNameEx(hProcess, hModule, path, sizeof(path);GetShortPathName(path,path,256);itoa(processidi,temp,10);printf(%s - %sn,path,temp);elseprintf(Failed!n);CloseHandle(hProcess);CloseHandle(hModule);itoa(processcount,temp,10);printf(nProcess Count:%snn,temp);return 0;/BOOL EnablePrivilege(HANDLE hToken,LPCSTR szPrivName)TOKEN_PRIVILEGES tkp;LookupPrivilegeValue( NULL,szPrivName,&tkp.Privileges0.Luid );/修改进程权限tkp.PrivilegeCount=1;tkp.Privileges0.Attributes=SE_PRIVILEGE_ENABLED;AdjustTokenPrivileges( hToken,FALSE,&tkp,sizeof tkp,NULL,NULL );/通知系统修改进程权限return( (

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论