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

0

これを行うには、サブプロセス (他の実行可能ファイル) を単純に実行および監視するホスト アプリケーションを実装します。次のようにファイルの名前を変更できます。

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

次のようにプロセスを開始します。

Process.Start("newfilename");

これは、1 つのプロセスではなく 2 つのプロセスを持つことを意味しますが、名前を変更するには、所有者プロセスが起動時にアクティブである必要があるだけです。

于 2013-06-04T10:19:25.197 に答える