有没有一种方法可以设置 AppDomain 的权限,使得在其中运行的代码无法终止启动它的进程?
更准确地说,假设我有一个 AppDomain appDomain,我想做类似的事情
try
{
appDomain.ExecuteAssembly("someAssembly.exe");
}catch(SomeForbiddenActionException e){
Console.WriteLine("someAssembly tried to perform some forbidden action")
}
假设 someAssembly.exe 执行以下代码:
static void Main(){
Process.GetCurrentProcess().Kill();
}
目前,如果我运行上面的代码,整个应用程序退出,我想不惜一切代价避免这种情况,我想调用 Process.GetCurrentProcess().Kill();引发异常,因为它是被禁止的。 我试图在应用程序域的设置过程中找到一些设置 Evidence 和/或 PermissionSet 的方法来防止这种情况发生但没有成功:
http://msdn.microsoft.com/en-us/library/bb763046%28v=vs.110%29.aspx
没有给我任何关于如何实现我的目标的线索。
appDomain.ProcessExit 只是一个在进程已经退出时调用一些代码的机会 => 不是一个好的选择
非常欢迎任何帮助或线索,谢谢!
最佳答案
您可以订阅正在退出的进程,但我不确定这是否会帮助您防止进程被终止。
var myProcess = Process.GetCurrentProcess();
myProcess.Exited += new EventHandler(myProcess_Exited);
private void myProcess_Exited(object sender, System.EventArgs e)
{
//not sure if there is a way to prevent the process from exiting here.
}
关于c# - 防止应用程序域中的进程终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27382540/