0

次のような外部プロセスを実行する「メインアプリ」があります。

sortProcess = new Process();
sortProcess.StartInfo.FileName = "app.exe";
sortProcess.StartInfo.UseShellExecute = false;
sortProcess.StartInfo.RedirectStandardOutput = true;
sortProcess.StartInfo.RedirectStandardError = true;
sortProcess.OutputDataReceived += new DataReceivedEventHandler(SortOutputHandler);
sortProcess.ErrorDataReceived += new DataReceivedEventHandler(sortProcess_ErrorDataReceived);
sortProcess.Start();
sortProcess.BeginOutputReadLine();
sortProcess.BeginErrorReadLine();
sortProcess.WaitForExit();
sortProcess.Close();

外部プロセスは、メイン アプリや多言語と通信するために非常にシンプルである必要があります。たとえば、次のようなコンソールです。

        Console.WriteLine(@"started");
       //do stuff
        Console.WriteLine(@"something done");
        //try to do more stuff
        throw new System.InvalidOperationException("Logfile cannot be read-only");
        //could do
        Console.WriteLine(@"done without errors");

app.exe には as がありOutput typeますWindows Application。メイン アプリで実行されていない限り、app.exe で他の場所からの exe の実行をブロックするにはどうすればよいですか

4

2 に答える 2

2

他のアプリケーションがexeを呼び出すのをブロックするための防弾ソリューションはわかりません。

ただし、ユーザーが app.exe をダブルクリックしたときに app.exe が起動しないようにすることが主な関心事である場合は、適切な引数なしで呼び出されたときに app.exe をすぐに閉じる (おそらく最初にメッセージ ボックスを表示する) ことでそれを行うことができます。

メインアプリケーションでは、次のような引数を渡すことができます...

sortProcess.Start("app.exe", "please");

Process.Startとこのコマンド ライン パラメーターのチュートリアルを参照してください(app.exe が .NET アプリケーションであると仮定します)。

于 2012-07-05T17:59:57.460 に答える
0

ユーザーから見えないようにするだけで十分な場合、たとえばユーザーがダブルクリックしないようにする場合は、ファイルの名前を変更することでこれを修正できますapp.bin

于 2012-07-05T18:33:23.637 に答える