1

好的,所以我一直在环顾四周,但在任何地方都找不到答案。

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

有一个名为“Liberation”的程序,当你运行它时,它会将进程名称更改为一些随机字符,如 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.
}
4

3 回答 3

1

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

阅读文档

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

于 2013-06-04T09:26:54.950 回答
1

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

于 2017-05-25T11:40:05.463 回答
0

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

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

并像这样开始这个过程:

Process.Start("newfilename");

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

于 2013-06-04T10:19:25.197 回答