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

时间:2013-06-04 09:21:30

标签: c# process

好的,所以我一直在四处寻找,我无法在任何地方找到答案。

我希望程序要做的就是每次运行它时,任务管理器中显示的名称都是随机的。

有一个名为'Liberation'的程序,当你运行它时,它会将进程名称更改为一些随机字符,如AeB4B3wf52.tmp或其他东西。我不确定它的编码是什么,所以这可能是问题。

这在C#中是否可行?

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

代码,如果有人有兴趣:

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.
}

3 个答案:

答案 0 :(得分:1)

任务管理器中的进程名称基于没有扩展名的可执行文件名称,在运行时无法更改。

阅读documentation

  

ProcessName属性包含可执行文件名,例如   Outlook,不包括.exe扩展名或路径。它是   有助于获取和操作所有进程   与相同的可执行文件相关联。

答案 1 :(得分:0)

我会实现一个宿主应用程序,只需运行和监视子进程(其他可执行文件)。您可以重命名文件:

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

并开始这样的过程:

Process.Start("newfilename");

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

答案 2 :(得分:0)

在Visual Studio中的

转到项目 - 属性 - 应用程序 - 程序集信息并更改标题