阻止直接执行

时间:2012-07-05 17:50:40

标签: c# process block

我有一个“主应用”,运行这样的外部流程:

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的Output typeWindows Application,我怎么能在app.exe上阻止从任何其他地方执行exe,除非它是由我的主应用程序运行的

2 个答案:

答案 0 :(得分:2)

我不确定阻止其他应用程序调用exe的防弹解决方案。

但是,如果您主要担心的是当用户双击它时阻止app.exe启动,那么您可以通过在没有正确参数的情况下立即关闭app.exe(可能首先显示消息框)来执行此操作

在您的主应用程序中,您可能会传递这样的论点......

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

请参阅Process.Start和此Command Line Parameters Tutorial(假设app.exe是.NET应用程序)。

答案 1 :(得分:0)

如果您需要从用户模糊它,例如所以他们不会双击它,你可以通过重命名文件来解决这个问题,例如:到app.bin