从同一个 .exe 打开每个实例后,是不是可以重命名进程(而不是程序名称)?
Posted
技术标签:
【中文标题】从同一个 .exe 打开每个实例后,是不是可以重命名进程(而不是程序名称)?【英文标题】:Is it possible to rename process(not program name) after each instance is open up from the same .exe?从同一个 .exe 打开每个实例后,是否可以重命名进程(而不是程序名称)? 【发布时间】:2020-06-16 03:22:54 【问题描述】:我在 Windows 10 上的单个 .exe 文件的多个实例中运行程序
例如,如果我打开 3 个“example.exe”实例,它将在任务管理器中显示进程名称。
example.exe
example.exe
example.exe
我想在每个过程之后分配编号。
example - 01.exe
example - 02.exe
example - 03.exe
................
................
................
example - 99.exe
这样我就可以从另一个程序设置规则以与每个正在运行的进程进行交互。
这个问题有解决办法吗?
谢谢。
【问题讨论】:
请不要向标签发送垃圾邮件。您使用的是上面标记的三种编程语言中的哪一种?还有,这个可执行程序是你写的,还是第三方的? 这是第三方的。抱歉,我是 *** 的新手。 不用担心,欢迎来到 Stack Overflow!如果不复制/重命名可执行文件,我认为您尝试做的事情是不可能的,但它很可能不是最好的方法。您可能应该改用进程 ID。请编辑问题并向我们展示您目前是如何启动这些流程的。 在 Windows API 中,可以将进程添加到命名的内核作业对象。成员可以通过IsProcessInJob
查看,Job中的进程可以通过QueryInformationJobObject
:JobObjectBasicProcessIdList
列出。这是一种“命名”进程的迂回方式。
【参考方案1】:
正如 Ahmed 在 cmets 中指出的那样,Windows 通过创建进程 ID 为您自动编号进程,这可用于区分它们。问题是进程 id 不像你在这里那样是连续的。您可以按进程 ID 对它们进行排序并分配您自己的编号,但如果一个进程退出其后所有这些进程的编号更改,这对您来说可能是个问题。您始终可以启动进程,检索它们的 ID 并维护 01 的映射是进程 ID x,02 是进程 ID y 等自己并在您的程序中传递它
您还可以考虑使用命令行参数启动每个应用程序,稍后您可以使用here 中提到的一种技术进行检索,因此当您启动您的 exe 三次时,您可以:
for(int x = 1; x <= 3; x++)
Process.Start("example.exe", x.ToString());
不过,示例应该能够忽略虚拟参数。如果它会注意它,请找到一些方法使其成为无操作
如果这一切都失败了,也许只有 99 个相同 exe 的副本,相应的名称,在一个文件夹中并准备好将是最简单的技巧
【讨论】:
以上是关于从同一个 .exe 打开每个实例后,是不是可以重命名进程(而不是程序名称)?的主要内容,如果未能解决你的问题,请参考以下文章
如何在gmail中下载包含.exe文件的.rar文件(附件)