电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Win 2000下的進程枚舉

瀏覽:67日期:2023-09-20 15:05:02

進程在每個系統中實現的方法是不一樣的,在 win 98 中,系統提供 TOOLHELP32 API 接口,在 win NT 中,系統提供 PSAPI 函數, 2000而 win 2000 既支持 TOOLHELP 又支持 PSAPI,NT 系統還提供了 NATIVE API (NtQuerySystemInformation),這個函數功能十分強大,幾乎可以查詢所有的系統信息,調用此函數必須有SE_TCB_NAME特權。下面給出函數原型: NTSTATUS WINAPI NtQuerySystemInformation( int SystemInfoClass PVOID SystemInfoBuffer, ULONG SystemInfoBufferSize, PULONG BytesReturned);

當 SystemInfoClass 等于5時便可獲取進程信息了。

關于 NT 系統下的特權(Privilege)及其描述見下表:

Privilege Constant Description SE_ASSIGNPRIMARYTOKEN_NAME Required to assign the primary token of a process. SE_AUDIT_NAME Required to generate audit-log entrIEs. Give this privilege to secure servers. SE_BACKUP_NAME Required to perform backup operations. SE_CHANGE_NOTIFY_NAME Required to receive notifications of changes to files or Directories. This privilege also causes the system to skip all traversal access checks. It is enabled by default for all users. SE_CREATE_PAGEFILE_NAME Required to create a paging file. SE_CREATE_PERMANENT_NAME Required to create a permanent object. SE_CREATE_TOKEN_NAME Required to create a primary token. SE_DEBUG_NAME Required to debug a process. SE_INC_BASE_PRIORITY_NAME Required to increase the base priority of a process. SE_INCREASE_QUOTA_NAME Required to increase the quota assigned to a process. SE_LOAD_DRIVER_NAME Required to load or unload a device driver. SE_LOCK_MEMORY_NAME Required to lock physical pages in memory. SE_PROF_SINGLE_PROCESS_NAME Required to gather profiling information for a single process. SE_REMOTE_SHUTDOWN_NAME Required to shut down a system using a network request. SE_RESTORE_NAME Required to perform restore operations. This privilege enables you to set any valid user or group SID as the owner of an object. SE_SECURITY_NAME Required to perform a number of security-related functions, such as controlling and viewing audit messages. This privilege identifies its holder as a security operator. SE_SHUTDOWN_NAME Required to shut down a local system. SE_SYSTEM_ENVIRONMENT_NAME Required to modify the nonvolatile RAM of systems that use this type of memory to store configuration information. SE_SYSTEM_PROFILE_NAME Required to gather profiling information for the entire system. SE_SYSTEMTIME_NAME Required to modify the system time. SE_TAKE_OWNERSHIP_NAME Required to take ownership of an object without being granted discretionary access. This privilege allows the owner value to be set only to those values that the holder may legitimately assign as the owner of an object. SE_TCB_NAME This privilege identifies its holder as part of the trusted computer base. Some trusted protected subsystems are granted this privilege. This privilege is required to call the LogonUser function. SE_UNSOLICITED_INPUT_NAME Required to read unsolicited input from a terminal device. SE_MacHINE_ACCOUNT_NAME Required to create a machine account.

關于定義可見下表,或察看 WINNT.H:

SE_CREATE_TOKEN_NAME SeCreateTokenPrivilegeSE_ASSIGNPRIMARYTOKEN_NAME SeAssignPrimaryTokenPrivilegeSE_LOCK_MEMORY_NAME SeLockMemoryPrivilegeSE_INCREASE_QUOTA_NAME SeIncreaseQuotaPrivilegeSE_UNSOLICITED_INPUT_NAME SeUnsolicitedInputPrivilegeSE_MACHINE_ACCOUNT_NAME SeMachineAccountPrivilegeSE_TCB_NAME SeTcbPrivilegeSE_SECURITY_NAME SeSecurityPrivilegeSE_TAKE_OWNERSHIP_NAME SeTakeOwnershipPrivilegeSE_LOAD_DRIVER_NAME SeLoadDriverPrivilegeSE_SYSTEM_PROFILE_NAME SeSystemProfilePrivilegeSE_SYSTEMTIME_NAME SeSystemtimePrivilegeSE_PROF_SINGLE_PROCESS_NAME SeProfileSingleProcessPrivilegeSE_INC_BASE_PRIORITY_NAME SeIncreaseBasePriorityPrivilegeSE_CREATE_PAGEFILE_NAME SeCreatePagefilePrivilegeSE_CREATE_PERMANENT_NAME SeCreatePermanentPrivilegeSE_BACKUP_NAME SeBackupPrivilegeSE_RESTORE_NAME SeRestorePrivilegeSE_SHUTDOWN_NAME SeShutdownPrivilegeSE_DEBUG_NAME SeDebugPrivilegeSE_AUDIT_NAME SeAuditPrivilegeSE_SYSTEM_ENVIRONMENT_NAME SeSystemEnvironmentPrivilegeSE_CHANGE_NOTIFY_NAME SeChangeNotifyPrivilegeSE_REMOTE_SHUTDOWN_NAME SeRemoteShutdownPrivilege

ADMINISTRATOR 被默認授于以下這16個權限:

SeChangeNotifyPrivilege SeSecurityPrivilege SeBackupPrivilege SeRestorePrivilege SeSystemtimePrivilege SeShutdownPrivilege SeRemoteShutdownPrivilege SeTakeOwnershipPrivilege SeDebugPrivilege SeSystemEnvironmentPrivilege SeSystemProfilePrivilege SeProfileSingleProcessPrivilege SeIncreaseBasePriorityPrivilege SeLoadDriverPrivilege SeCreatePagefilePrivilege SeIncreaseQuotaPrivilege

可以用 OpenProcessToken 和 AdjustTokenPrivileges 這兩個函數來提升進程的特權。

講了那么多,現在回到主題上來。到底使用哪個方法比較好呢?在 win 2000 下有3個方法可供選擇,我比較喜歡簡單的方法。NtQuerySystemInformation 功能固然強大,但使用比較麻煩。而 win 2000 的 TOOLHELP32 API 其本質還是調用了 NtQuerySystemInformation 函數,由于它發生錯誤時,可能不能正確返回返回值,所以不是很穩定,使用起來也是很麻煩的,不符合我的懶人本性。還是采用 PSAPI 比較好,簡單又方便,只需要三個函數,且沒有復雜的結構體參數。

函數原型:

BOOLWINAPIEnumProcesses(DWord * lpidProcess,//指針指向存放進程ID的數組DWORD cb, //數組大小DWORD * cbNeeded //返回的實際大?。?;

BOOLWINAPIEnumProcessModules(HANDLE hProcess, //進程句柄HMODULE *lphModule, //指針指向存放模塊句柄的數組DWORD cb, //數組大小LPDWORD lpcbNeeded //返回的實際大?。?;

DWORDWINAPIGetModuleFileNameEx(HANDLE hProcess, //進程句柄HMODULE hModule, //模塊句柄LPSTR lpFilename, //存放模塊文件名的字符串DWORD nSize //字符串大?。?/P>

 他們的作用分別是:枚舉進程,枚舉進程模塊,獲取模塊文件名(包含路徑)。詳細的源代碼如下:

// EnumProcess.cpp : Defines the entry point for the console application.// Code By : tabris17

#include 'stdafx.h'#include 'Psapi.h'

#pragma comment (lib,'Psapi.lib')

void PrintFileName(DWORD processID){char fn[MAX_PATH];HANDLE hProcess=OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,FALSE,processID);if (hProcess){HMODULE hMod[1024];DWORD cbNeeded,size;unsigned int i;if (EnumProcessModules(hProcess,hMod,sizeof(hMod),&cbNeeded)){size=cbNeeded/sizeof(HMODULE);GetModuleFileNameEx(hProcess,hMod[0],fn,sizeof(fn));printf('n(%u)t%sn',processID,fn);for(i=1;i<size;i++){GetModuleFileNameEx(hProcess,hMod[i],fn,sizeof(fn));printf('t%sn',fn);}}}CloseHandle(hProcess);}

int plist(){DWORD Processesid[1024], cbNeeded,size;unsigned int i;if (!EnumProcesses(Processesid,sizeof(Processesid),&cbNeeded))return 0;

size=cbNeeded/sizeof(DWORD);

for (i=0;i<size;i++)PrintFileName(Processesid[i]);return 0;}

int main(int argc, char* argv[]){plist();return 0;}

主站蜘蛛池模板: 细砂提取机,隔膜板框泥浆污泥压滤机,螺旋洗砂机设备,轮式洗砂机械,机制砂,圆锥颚式反击式破碎机,振动筛,滚筒筛,喂料机- 上海重睿环保设备有限公司 | 液氨泵,液化气泵-淄博「亚泰」燃气设备制造有限公司 | 压砖机、液压制砖机、静压砖机、环保砖机生产厂家—杜甫机械 | 钢格板_钢格栅_格栅板_钢格栅板 - 安平县鑫拓钢格栅板厂家 | 雷达液位计_超声波风速风向仪_雨量传感器_辐射传感器-山东风途物联网 | 合肥宠物店装修_合肥宠物美容院装修_合肥宠物医院设计装修公司-安徽盛世和居装饰 | 电磁流量计厂家_涡街流量计厂家_热式气体流量计-青天伟业仪器仪表有限公司 | 金现代信息产业股份有限公司--数字化解决方案供应商 | 选矿设备-新型重选设备-金属矿尾矿重选-青州冠诚重工机械有限公司 | [官网]叛逆孩子管教_戒网瘾学校_全封闭问题青少年素质教育_新起点青少年特训学校 | 密封圈_泛塞封_格莱圈-[东莞市国昊密封圈科技有限公司]专注密封圈定制生产厂家 | 天长市晶耀仪表有限公司| 搪瓷搅拌器,搪玻璃搅拌器,搪玻璃冷凝器_厂家-淄博越宏化工设备 | 活性氧化铝球|氧化铝干燥剂|分子筛干燥剂|氢氧化铝粉-淄博同心材料有限公司 | 超声波乳化机-超声波分散机|仪-超声波萃取仪-超声波均质机-精浩机械|首页 | 刹车盘机床-刹车盘生产线-龙口亨嘉智能装备 | 百度爱采购运营研究社社群-店铺托管-爱采购代运营-良言多米网络公司 | 不锈钢发酵罐_水果酒发酵罐_谷物发酵罐_山东誉诚不锈钢制品有限公司 | 便携式表面粗糙度仪-彩屏硬度计-分体式粗糙度仪-北京凯达科仪科技有限公司 | 知名电动蝶阀,电动球阀,气动蝶阀,气动球阀生产厂家|价格透明-【固菲阀门官网】 | 洛阳防爆合格证办理-洛阳防爆认证机构-洛阳申请国家防爆合格证-洛阳本安防爆认证代办-洛阳沪南抚防爆电气技术服务有限公司 | 磁力链接搜索神器_BT磁力狗_CILIMAO磁力猫_高效磁力搜索引擎2024 | 恒温槽_恒温水槽_恒温水浴槽-上海方瑞仪器有限公司 | 裹包机|裹膜机|缠膜机|绕膜机-上海晏陵智能设备有限公司 | 湖南档案密集架,智能,物证,移动,价格-湖南档案密集架厂家 | 【直乐】河北石家庄脊柱侧弯医院_治疗椎间盘突出哪家医院好_骨科脊柱外科专业医院_治疗抽动症/关节病骨伤权威医院|排行-直乐矫形中医医院 | 伟秀电气有限公司-10kv高低压开关柜-高低压配电柜-中置柜-充气柜-欧式箱变-高压真空断路器厂家 | 低压载波电能表-单相导轨式电能表-华邦电力科技股份有限公司-智能物联网综合管理平台 | 纯化水设备-EDI-制药-实验室-二级反渗透-高纯水|超纯水设备 | 上海小程序开发-上海小程序制作公司-上海网站建设-公众号开发运营-软件外包公司-咏熠科技 | 上海洗地机-洗地机厂家-全自动洗地机-手推式洗地机-上海滢皓洗地机 | 新疆十佳旅行社_新疆旅游报价_新疆自驾跟团游-新疆中西部国际旅行社 | BOE画框屏-触摸一体机-触控查询一体机-触摸屏一体机价格-厂家直销-触发电子 | EDLC超级法拉电容器_LIC锂离子超级电容_超级电容模组_软包单体电容电池_轴向薄膜电力电容器_深圳佳名兴电容有限公司_JMX专注中高端品牌电容生产厂家 | 对辊式破碎机-对辊制砂机-双辊-双齿辊破碎机-巩义市裕顺机械制造有限公司 | 回转支承-转盘轴承-回转驱动生产厂家-洛阳隆达轴承有限公司 | 篮球架_乒乓球台_足球门_校园_竞技体育器材_厂家_价格-沧州浩然体育器材有限公司 | 空压机网_《压缩机》杂志 | 日本细胞免疫疗法_肿瘤免疫治疗_NK细胞疗法 - 免疫密码 | 浙江工业冷却塔-菱电冷却塔厂家 - 浙江菱电冷却设备有限公司 | 彭世修脚_修脚加盟_彭世修脚加盟_彭世足疗加盟_足疗加盟连锁_彭世修脚技术培训_彭世足疗 |