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 具有Output typeas Windows Application,我如何在 app.exe 上阻止从任何其他地方执行 exe,除非它由我的主应用程序运行

4

2 回答 2

2

我不确定阻止其他应用程序调用 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 回答