如何查看一个进程的启动路径
- 格式:docx
- 大小:318.53 KB
- 文档页数:4
windows7怎么看进程
使用Win7系统的时候有时CPU占用会跑得很高,那么windows7怎么看进程呢?今天店铺与大家分享下windows7看进程的具体操作步骤,有需要的朋友不妨了解下。
windows7看进程方法一
最简单的查看进程的办法是使用Windows任务管理器,可以在任务栏上单击右键打开,也可以通过Ctrl+Alt+delete的快捷键唤出。
任务管理器切换到“进程”一栏,就能看到计算机中正在运行着的进程,通过其描述我们可以大致推测出其功能
windows7看进程方法二
我们也可以通过DOS指令来查看进程。
在运行窗口中输入cmd 并回车就可以唤出命令提示符
窗口中输入tasklist并回车就可以看到进程列表。
只有进程名和描述我们仍然很难判断进程的来源程序。
对此我们可以使用Windows管理器中的资源管理器,在刚才的Windows任务管理器中选择“性能”,并选择“资源管理器”
在资源管理器中切换到CPU选项卡,然后勾选自己想要查看的进程
最后展开“关联的模块”,就能看到该进程的源程序位置了。
C#获取当前程序运⾏路径的⼏种⽅法1.//获取模块的完整路径。
string path1 = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;2.//获取和设置当前⽬录(该进程从中启动的⽬录)的完全限定⽬录string path2 = System.Environment.CurrentDirectory;3.//获取应⽤程序的当前⼯作⽬录string path3 = System.IO.Directory.GetCurrentDirectory();4.//获取程序的基⽬录string path4 = System.AppDomain.CurrentDomain.BaseDirectory;5.//获取和设置包括该应⽤程序的⽬录的名称string path5 = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;6.//获取启动了应⽤程序的可执⾏⽂件的路径string path6 = System.Windows.Forms.Application.StartupPath;7.//获取启动了应⽤程序的可执⾏⽂件的路径及⽂件名string path7 = System.Windows.Forms.Application.ExecutablePath;StringBuilder str = new StringBuilder();//拼接字符串输出str.Append("System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName:" + path1);str.Append("System.Environment.CurrentDirectory:" + path2);str.Append("System.IO.Directory.GetCurrentDirectory():" + path3);str.Append("System.AppDomain.CurrentDomain.BaseDirectory:" + path4);str.Append("System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase:" + path5);str.Append("System.Windows.Forms.Application.StartupPath:" + path6);str.Append("System.Windows.Forms.Application.ExecutablePath:" + path7);string allPath = str.ToString();输出运⾏结果:1.System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName:C:\Users\Lenovo\Desktop\QRCode\QRCode\bin\Debug\QRCode.vshost.exe2.System.Environment.CurrentDirectory:C:\Users\Lenovo\Desktop\QRCode\QRCode\bin\Debug3.System.IO.Directory.GetCurrentDirectory():C:\Users\Lenovo\Desktop\QRCode\QRCode\bin\Debug4.System.AppDomain.CurrentDomain.BaseDirectory:C:\Users\Lenovo\Desktop\QRCode\QRCode\bin\Debug\5.System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase:C:\Users\Lenovo\Desktop\QRCode\QRCode\bin\Debug\6.System.Windows.Forms.Application.StartupPath:C:\Users\Lenovo\Desktop\QRCode\QRCode\bin\Debug7.System.Windows.Forms.Application.ExecutablePath:C:\Users\Lenovo\Desktop\QRCode\QRCode\bin\Debug\QRCode.EXE。
Windows系统任务管理器解析查看和结束进程Windows系统任务管理器是Windows操作系统提供的一种工具,用于管理和监视计算机上运行的进程、应用程序和系统性能。
通过任务管理器,我们可以查看和结束正在运行的进程,以及监控CPU、内存、磁盘和网络的使用情况。
本文将详细介绍Windows系统任务管理器的功能和如何使用它来查看和结束进程。
一、任务管理器的打开方式要打开任务管理器,我们可以使用以下几种方法:1. 使用快捷键组合:Ctrl + Shift + Esc。
2. 右键点击任务栏空白处,选择“任务管理器”选项。
3. 按下Ctrl + Alt + Delete组合键,然后选择“任务管理器”选项。
二、任务管理器的界面介绍打开任务管理器后,我们可以看到以下几个选项卡:1. 进程:显示所有正在运行的进程和应用程序。
2. 性能:显示系统的性能信息,如CPU、内存、磁盘和网络的使用情况。
3. 应用:显示所有正在运行的应用程序。
4. 启动:显示系统启动时自动启动的程序列表。
5. 用户:显示当前登录用户的会话信息。
6. 详细信息:显示更详细的系统和应用程序信息。
三、查看进程和应用程序在“进程”选项卡下,我们可以查看当前正在运行的进程和应用程序。
每个进程都会显示其进程名、进程ID、CPU占用率、内存占用率等信息。
要查看某个进程的详细信息,可以右键点击该进程,并选择“打开文件位置”、“结束任务”、“设置优先级”等选项。
四、结束进程有时候,我们需要结束某个进程来解决问题,或释放系统资源。
在任务管理器中,我们可以使用以下步骤来结束进程:1. 打开任务管理器。
2. 在“进程”选项卡下,找到要结束的进程。
3. 右键点击该进程,并选择“结束任务”选项。
请注意,在结束进程之前,我们需要确保结束的进程不是系统关键进程或其他重要的应用程序。
结束了关键进程可能会导致系统不稳定或出现其他问题。
五、性能监控和优化通过任务管理器的“性能”选项卡,我们可以实时监控系统的性能参数,包括CPU使用率、内存使用率、磁盘活动等。
如何在终端中查看和管理进程进程是计算机中运行着的程序的实例。
在现代操作系统中,可以同时运行多个进程,每个进程都有自己的独立空间和资源。
为了管理和监控这些进程,我们可以通过终端来查看进程的状态、控制其行为以及执行其他相关操作。
下面将介绍如何在终端中查看和管理进程。
一、查看进程1. ps命令ps命令是一个常用的用于查看进程的命令。
在终端中输入以下命令可以显示当前运行的进程列表:```shellps aux```该命令会显示出进程的详细信息,包括进程ID(PID)、CPU利用率、内存占用情况、运行时间等。
2. top命令top命令可以以交互式的方式实时显示系统的进程状态。
在终端中输入以下命令启动top:```shelltop```top命令会将进程按照CPU利用率进行排序,并显示出各个进程的相关信息。
可以通过按键来进行排序、筛选等操作。
3. pstree命令pstree命令可以以树形显示进程的层次关系。
在终端中输入以下命令可以显示进程树:```shellpstree```该命令会将进程按照它们的父子关系进行层次化显示,便于查看进程之间的关系。
二、管理进程1. kill命令kill命令用于向进程发送信号,常用于终止某个进程。
在终端中输入以下命令可以杀死指定进程:```shellkill [进程ID]```其中,[进程ID]为目标进程的PID。
使用kill命令时,可以指定不同的信号来控制进程的行为,比如使用SIGKILL信号可以强制终止进程。
2. pidof命令pidof命令用于查找某个指定进程的PID。
在终端中输入以下命令可以查找指定进程的PID:```shellpidof [进程名]```其中,[进程名]为目标进程的名称。
3. renice命令renice命令用于修改进程的优先级。
在终端中输入以下命令可以修改指定进程的优先级:```shellrenice [优先级值] [进程ID]```其中,[优先级值]为-20至19之间的一个整数,[进程ID]为目标进程的PID。
Linux命令高级技巧使用lsof命令查看系统中打开的文件和进程lsof命令是Linux系统中一个非常实用的命令,用于查看系统中打开的文件和进程。
在系统管理和故障排查中,lsof是一个强大的工具,可以帮助我们快速了解系统资源的使用情况。
本文将介绍lsof命令的基本用法和高级技巧,帮助读者更好地使用这个命令。
一、基本用法1. 查看系统中所有打开的文件和进程:使用命令lsof即可查看系统中所有已打开的文件和进程列表。
命令示例:```lsof```该命令将列出系统中所有已打开的文件和进程的详细信息,包括文件路径、进程ID、用户、权限等。
2. 查看指定进程的打开文件:使用命令lsof -p <进程ID>可以查看指定进程的打开文件列表。
命令示例:```lsof -p 1234```其中,1234为进程的ID。
该命令将列出指定进程打开的文件列表。
3. 查看指定文件被哪些进程打开:使用命令lsof <文件路径>可以查看指定文件被哪些进程打开。
命令示例:```lsof /var/log/syslog```该命令将列出打开/var/log/syslog文件的进程列表。
二、高级技巧1. 以用户角度查看文件和进程:使用命令lsof -u <用户名>可以以指定的用户角度查看系统中的文件和进程。
命令示例:```lsof -u root```该命令将列出用户root打开的文件和进程列表。
2. 查找指定端口被哪个进程占用:使用命令lsof -i :<端口号>可以查找指定端口被哪个进程占用。
命令示例:```lsof -i :80```该命令将列出占用端口80的进程信息。
3. 查看指定目录下被打开的文件:使用命令lsof +D <目录路径>可以查看指定目录中被打开的文件列表。
命令示例:```lsof +D /etc```该命令将列出目录/etc中被打开的文件列表。
4. 查看指定用户打开的文件数:使用命令lsof -u <用户名> | wc -l可以查看指定用户打开的文件数。
获取进程对应可执行文件的完整路径,在编程中经常遇到。
下面做了下详细分析。
欢迎指正!获取进程完整路径方法小结By Angelkiss 2011年2月9日星期三最近在做一个xx项目,少不了要拦截进程创建.拦截进程创建的方法在这里就不多说了,免得跑题(其实也就是各种Hook的运用).拦截到进程创建后,需要获得进程对应的可执行文件完整路径,因为只有进一步分析可执行文件,才能获得更多信息来判断该进程的好坏.于是有了本文的产生.很多人对于获取进程的完整路径可能不屑一顾.以前写过的代码中确实也遇到过,利用google几分钟内,你会得到几个Api,例如:GetModuleFileNameEx,GetProcessImageFileName等.但对于Ring3层提供的Api,Windows 内核层做了什么,又有多少人很明确的知道?杀毒软件与病毒木马一直玩着猫和老鼠的游戏,病毒木马稍作手脚,Ring3获取进程完整路径时就会失败.只有我们知道这些Api的本质,才能以不变应万变.下面将从Windows内核层分析这些Api的本质,并提供几种获取进程完整路径及防止别人获取进程完整路径的方法.一. 进程内核数据结构中与路径信息相关位置_EPROCESS->_SE_AUDIT_PROCESS_CREA TION_INFO->_OBJECT_NAME_INFORMATION从上面的截图可以看到,在进程内核对象EPROCESS偏移0x1f4处存放着_SE_AUDIT_PROCESS_CREA TION_INFO结构的指针,该指针处又存放着_OBJECT_NAME_INFORMATION结构的指针,而该结构中存放着该进程的NT式文件路径._EPROCESS->_SECTION_OBJECT->_SEGMENT_OBJECT->_CONTROL_AREA->_FILE_OBJECT:从上面的截图可以看到进程内核对象偏移0x138处存放着指向_SECTION_OBJECT结构的指针,而该结构的0x14处存放着_SEGMENT_OBJECT结构指针,_SEGMENT_OBJECT结构偏移0x0处是_CONTROL_AREA 结构的指针,该结构偏移0x24处是_FILE_OBJECT结构的指针,利用该结构的_DEVICE_OBJECT,FileName 两个成员和RtlV olumeDeviceToDosName函数可以获取进程文件的DOS完整路径_PEB->_PEB_LDR_DATA->_LDR_DATA_TABLE_ENTRY:可以看到_PEB偏移0xc处是_PEB_LDR_DA TA数据结构,该结构偏移0xc处是_LDR_DATA_TABLE_ENTRY数据结构.但是需要注意的是,上面的成员获取必须在对应进程的上下文._PEB->_RTL_USER_PROCESS_PARAMETERS:同样是_PEB结构,偏移0x10处是_RTL_USER_PROCESS_PARAMETERS结构.同样需要在目标进程的上下文空间.上面就是进程内核对象中存放路径的相关位置,当然也许还有其他地方,麻烦知道的大牛告诉我,谢谢!二. 微软提供的获取进程路径相关函数分析1. GetProcessImageFileName函数:DWORD GetProcessImageFileName(HANDLE hProcess,//目标进程句柄LPTSTR lpImageFileName,//提供的空间,用于保存获取到的进程路径DWORD nSize//空间大小);//返回实际路径长度上面的函数获取的进程可执行文件NT式完整路径.从前面的分析中我们可以看到, _EPROCESS->_SE_AUDIT_PROCESS_CREATION_INFO->_OBJECT_NAME_INFORMA TION该处存放的就是NT式完整路径.我们来验证下:0:000> uf PSAPI!GetProcessImageFileNameAPSAPI!GetProcessImageFileNameA:76bc3dbd 8bff mov edi,edi76bc3dbf 55 push ebp76bc3dc0 8bec mov ebp,esp76bc3dc2 53 push ebx76bc3dc3 8b5d10 mov ebx,dword ptr [ebp+10h]76bc3dc6 56 push esi76bc3dc7 57 push edi76bc3dc8 8d5c1b08 lea ebx,[ebx+ebx+8]76bc3dcc 53 push ebx76bc3dcd 33ff xor edi,edi76bc3dcf 57 push edi76bc3dd0 ff155c10bc76 call dword ptr [PSAPI!_imp__LocalAlloc (76bc105c)]76bc3dd6 8bf0 mov esi,eax76bc3dd8 3bf7 cmp esi,edi76bc3dda 7504 jne PSAPI!GetProcessImageFileNameA+0x23 (76bc3de0)PSAPI!GetProcessImageFileNameA+0x1f:76bc3ddc 33db xor ebx,ebx76bc3dde eb53 jmp PSAPI!GetProcessImageFileNameA+0x76 (76bc3e33)PSAPI!GetProcessImageFileNameA+0x23:76bc3de0 57 push edi76bc3de1 53 push ebx76bc3de2 56 push esi76bc3de3 6a1b push 1Bh76bc3de5 ff7508 push dword ptr [ebp+8]76bc3de8 ff15d810bc76 call dword ptr [PSAPI!_imp__NtQueryInformationProcess (76bc10d8)]76bc3dee 3d040000c0 cmp eax,0C0000004h76bc3df3 7503 jne PSAPI!GetProcessImageFileNameA+0x3b (76bc3df8)PSAPI!GetProcessImageFileNameA+0x38:76bc3df5 83c01f add eax,1FhPSAPI!GetProcessImageFileNameA+0x3b:76bc3df8 3bc7 cmp eax,edi76bc3dfa 7d12 jge PSAPI!GetProcessImageFileNameA+0x51 (76bc3e0e)PSAPI!GetProcessImageFileNameA+0x3f:76bc3dfc 50 push eax76bc3dfd ff15e410bc76 call dword ptr [PSAPI!_imp__RtlNtStatusToDosError (76bc10e4)] 76bc3e03 50 push eax76bc3e04 ff156010bc76 call dword ptr [PSAPI!_imp__SetLastError (76bc1060)]76bc3e0a 33db xor ebx,ebx76bc3e0c eb1e jmp PSAPI!GetProcessImageFileNameA+0x6f (76bc3e2c)PSAPI!GetProcessImageFileNameA+0x51:76bc3e0e 0fb706 movzx eax,word ptr [esi]76bc3e11 57 push edi76bc3e12 57 push edi76bc3e13 ff7510 push dword ptr [ebp+10h]76bc3e16 ff750c push dword ptr [ebp+0Ch]76bc3e19 50 push eax76bc3e1a ff7604 push dword ptr [esi+4]76bc3e1d 57 push edi76bc3e1e 57 push edi76bc3e1f ff156810bc76 call dword ptr [PSAPI!_imp__WideCharToMultiByte (76bc1068)] 76bc3e25 8bd8 mov ebx,eax76bc3e27 3bdf cmp ebx,edi76bc3e29 7401 je PSAPI!GetProcessImageFileNameA+0x6f (76bc3e2c)PSAPI!GetProcessImageFileNameA+0x6e:76bc3e2b 4b dec ebxPSAPI!GetProcessImageFileNameA+0x6f:76bc3e2c 56 push esi76bc3e2d ff155810bc76 call dword ptr [PSAPI!_imp__LocalFree (76bc1058)]PSAPI!GetProcessImageFileNameA+0x76:76bc3e33 5f pop edi76bc3e34 5e pop esi76bc3e35 8bc3 mov eax,ebx76bc3e37 5b pop ebx76bc3e38 5d pop ebp76bc3e39 c20c00 ret 0Ch从上面的代码可以看到GetProcessImageFileName是调用NtQueryInformationProcess的0x1b号功能。