在任务管理器中更改程序进程名

本文关键字:进程名 更改程序 任务管理器 | 更新日期: 2023-09-27 18:16:45

好吧,我到处找都找不到答案。

我想让我的程序做的是每次运行它时,出现在任务管理器中的名称是随机的。

有一个叫做"解放"的程序,当你运行它时,它会将进程名更改为一些随机字符,比如AeB4B3wf52.tmp之类的。我不确定它是用什么编码的,所以这可能是问题所在。

这在c#中可能吗?

编辑:我做了一个草率的工作,我创建了一个单独的程序,它会检查是否有一个名为'pb.dat'的文件,它会将其复制到临时文件夹,将其重命名为'randomchars.tmp'并运行它。

代码,如果有人感兴趣的话:

private void Form1_Load(object sender, EventArgs e)
{
    try
    {
        if (!Directory.Exists(Environment.CurrentDirectory + @"'temp")) // Create a temp directory.
            Directory.CreateDirectory(Environment.CurrentDirectory + @"'temp");
        DirectoryInfo di = new DirectoryInfo(Environment.CurrentDirectory + @"'temp");
        foreach (FileInfo f in di.GetFiles()) // Cleaning old .tmp files
        {
            if (f.Name.EndsWith(".tmp"))
                        f.Delete();
        }
        string charList = "abcdefghijklmnopqrstuvwxyz1234567890";
        char[] trueList = charList.ToCharArray();
        string newProcName = "";
        for (int i = 0; i < 8; i++) // Build the random name
            newProcName += trueList[r.Next(0, charList.Length)];
        newProcName += ".tmp";
        if (File.Exists(Environment.CurrentDirectory + @"'pb.dat")) // Just renaming and running.
        {
            File.Copy(Environment.CurrentDirectory + @"'pb.dat", Environment.CurrentDirectory + @"'temp'" + newProcName);
            ProcessStartInfo p = new ProcessStartInfo();
            p.FileName = Environment.CurrentDirectory + @"'temp'" + newProcName;
            p.UseShellExecute = false;
            Process.Start(p);
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show("I caught an exception! This is a bad thing...'n'n" + ex.ToString(), "Exception caught!");
    }
    Environment.Exit(-1); // Close this program anyway.
}

在任务管理器中更改程序进程名

任务管理器中的进程名以可执行文件名为基础,不带扩展名,不能在运行时更改。

阅读文档:

ProcessName属性保存可执行文件名,例如Outlook,它不包括。exe扩展名或路径。它是对获取和控制所有的过程都很有帮助与同一个可执行文件相关联。

在visual studio中进入项目-属性-应用程序-程序集信息并更改标题

我将实现一个宿主应用程序来执行此操作,它只是运行和监视子进程(其他可执行程序)。您可以将文件重命名为:

System.IO.File.Move("oldfilename", "newfilename");

并像这样开始处理:

Process.Start("newfilename");

这意味着你将有两个进程,而不是一个进程,但是所有者进程只需要在启动时是活动的-以便更改名称。