2013-06-04 6 views
1

Итак, я оглядывался, и я не могу найти ответ нигде.Изменение имени процесса программы в диспетчере задач?

Что я хочу, чтобы моя программа выполняла каждый раз при запуске, имя, которое отображается в диспетчере задач, рандомизировано.

Существует программа под названием «Освобождение», которая при ее запуске изменит имя процесса на некоторые случайные символы, такие как AeB4B3wf52.tmp или что-то в этом роде. Я не уверен, что он закодирован, хотя это может быть проблемой.

Возможно ли это в C#?

Редактировать: Я сделал небольшую работу, я создал отдельную программу, которая проверит, есть ли файл с именем «pb.dat», он скопирует его в папку temp, переименуйте его в «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. 
} 
+5

Похоже, вы пишете вирус :) – Andrew

+0

@ Андрей: лол, +1! Во всяком случае, это можно найти в Интернете! http://stackoverflow.com/questions/1055987/c-how-to-set-an-projects-executable-processname – dqm

+0

Это своего рода школьный проект, я пишу блок блокировки процессов, который закрывает определенный процесс, и учитель предложил сделать рандомизированное имя ха-ха. – Tim

ответ

0

Я бы выполнил приложение-хост для этого, которое просто запускает и контролирует подпроцесс (другой исполняемый файл). Вы можете переименовать файл как например:

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

и начать процесс так:

Process.Start("newfilename"); 

Это означало бы, что вместо одного процесса вы бы два, но процесс владелец должен только быть живым при запуске - чтобы изменить имя.

+1

Отредактировано сообщение о том, как я это сделал. : s Я думаю, это то, что вы имели в виду? – Tim

1

Имя процесса в диспетчере задач баз на имя исполняемого файла без расширения, которые вы не можете изменить время его работы.

Читать documentation:

Свойство ProcessName держит имя исполняемого файла, например , Outlook, который не включает в себя расширение .exe или путь. Это полезно для получения и обработки всех процессов, которые являются , связанных с одним и тем же исполняемым файлом.

+0

Будет ли способ изменить имя сборки при запуске программы? Или это построено с помощью компилятора? – Tim

+0

Вы не можете изменить имя файла, в котором он запущен, поэтому сборка не может изменить свое имя. – CloudyMarble

0

в визуальной студии идут в проект - Свойства - Заявка - информация и изменение Ассамблеи Название

Смежные вопросы