好的,所以我一直在四处寻找,我无法在任何地方找到答案。
我希望程序要做的就是每次运行它时,任务管理器中显示的名称都是随机的。
有一个名为'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.
}
答案 0 :(得分:1)
任务管理器中的进程名称基于没有扩展名的可执行文件名称,在运行时无法更改。
ProcessName属性包含可执行文件名,例如 Outlook,不包括.exe扩展名或路径。它是 有助于获取和操作所有进程 与相同的可执行文件相关联。
答案 1 :(得分:0)
我会实现一个宿主应用程序,只需运行和监视子进程(其他可执行文件)。您可以重命名文件:
System.IO.File.Move("oldfilename", "newfilename");
并开始这样的过程:
Process.Start("newfilename");
这意味着您将拥有两个进程而不是一个进程,但是所有者进程只需要在启动时处于活动状态 - 以便更改名称。
答案 2 :(得分:0)
转到项目 - 属性 - 应用程序 - 程序集信息并更改标题