我有一个“主应用”,运行这样的外部流程:
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 type
为Windows Application
,我怎么能在app.exe上阻止从任何其他地方执行exe,除非它是由我的主应用程序运行的
答案 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
。