さて、私は周りを見回してきましたが、どこにも答えが見つかりません。
プログラムに実行させたいのは、実行するたびに、タスク マネージャーに表示される名前がランダム化されることです。
「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.
}