检查特定的exe文件是否正在运行
我想知道如何检查特定位置的程序是否正在运行。例如,test.exe 有两个位置:c:\loc1\test.exe 和 c:\loc2\test.exe。我只想知道 c:\loc1\test.exe 是否正在运行,而不是 test.exe 的所有实例。
I want to know how i can check a program in a specific location if it is running. For example there are two locations for test.exe in c:\loc1\test.exe and c:\loc2\test.exe. I only wanted to know if c:\loc1\test.exe is running and not all instances of test.exe.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
这是我改进的功能:
并将其用作:
This is my improved function :
and use it as :
试试这个...我用它来确定启动时是否已经有另一个进程与我尝试启动的 exe 同名运行,然后将该进程带到前台(并聚焦)如果它已经在运行正在运行...您可以修改它以获取进程名称并测试该特定名称...这将告诉您是否有一个以特定名称运行的进程,但不告诉您该进程是从哪里加载的...
如果有是一个以指定名称运行的进程,那么如果该进程有一个公开的可访问方法返回它的加载位置,您可以在正在运行的进程上调用该方法,否则,我不知道..
但只是出于好奇,除非它们不同,否则你为什么要关心?如果它们在某些方面有所不同,则编写代码以使用该差异(无论它是什么)来检测加载了哪个。但如果它们是相同的,那么使用哪个磁盘映像来加载它又有什么关系呢?
try this... I use it to determine at startup if another process is already running with the same name as the exe I'm trying to start, and then just bring that one to foreground, (and to focus) if it is already running... You could modify it to take a process name and test for that specific name... This will tell you if there is a process running with a certain name, but not where that process was loaded from ...
If there is a process running with the specified name, then if that process had an exposed accessible method that returns where it was loaded from, you could call that method on the running process, otherwise, I don't know..
But just out of curiosity, why do you care, unless they're different? And if they're different in some way, code to use that difference (whatever it is) to detect which is loaded. But if they're the same how can it matter which on-disk image was used to load it?
此功能可能会有所帮助:
来源:http://www.dreamincode.net/code/snippet1541.htm< /a>
This function may help:
Source: http://www.dreamincode.net/code/snippet1541.htm
您应该迭代所有现有进程,然后检查其 MainModule 属性以获取您要查找的文件名。像这样的东西
You should iterate over all existing processes and then check their MainModule property for the file name you are looking for. Something like this
像这样的东西。 GetMainModuleFileName 有助于从 x86 访问 x64 进程。
Something like this. GetMainModuleFileName helps to access x64 process from x86.
您可以使用命名互斥体,其名称为脱离程序运行的目录结构。
You could use a named mutex, that's named off of the directory structure the program is running in.
这将为您带来有关入口程序集的大量信息,例如:
这将告诉正在运行的程序集的位置。
This will bring for you a lot of info about the entry assembly, such as:
This will tell the location of the running assembly.