繁体   English   中英

在Windows中设置子进程名称?

[英]Set child process name in Windows?

我有一个进程,该进程运行多次子进程(每个进程都没有GUI),并且它需要为所有子进程设置任务管理器的不同“名称”和“描述”。 是否可以使用Win API? 我找不到Windows系列的解决方案。

我看了看WriteProcessMemory,但它看起来像作弊形式,即使可以更改名称也是如此。 复制.exe文件,运行它以及在过程完成后删除它的解决方案-删除它-甚至更有弊。 可能存在使用内存中的启动过程的解决方案(因此,我将exe文件加载到内存中,然后从那里启动它),但它看起来也很糟糕,我不确定是否可以更改名称。

我希望必须有解决方案才能将进程名称设置为我自己的子进程,不是吗?

您无法更改任务管理器中显示的“图像名称”。 如您所见,Windows从实际正在执行的文件的名称中获取该信息,并且使外观有所不同的唯一方法是实际运行具有不同名称的文件(例如,通过复制可执行文件)。

如果您以Windows的较新版本为目标,则任务管理器可以显示“命令行”列(“视图”->“选择列”)。 您可以通过在命令行中包含特定标志,或将lpCommandLine参数的第一个标记设置为唯一的东西来使您的进程与众不同-您只需将lpApplicationName参数设置为要运行的实际可执行文件,即可使加载程序可以找到它。

例如:

BOOL ret1 = CreateProcess(
               "c:\\program\\worker.exe",
               "worker1.exe infile outfile",
               ...);

BOOL ret2 = CreateProcess(
               "c:\\program\\worker.exe",
               "worker2.exe infile outfile",
               ...);

这些在“任务管理器”中将具有相同的“映像名称”值,但可以通过命令行值加以区分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM