防止appdomain中的进程终止

时间:2014-12-09 15:23:09

标签: c# process appdomain kill-process

有没有办法设置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();提出异常是因为它是被禁止的。 我试图在app域的设置过程中找到一些设置Evidence和/或PermissionSet的方法,以防止这种情况但没有成功:

http://msdn.microsoft.com/en-us/library/bb763046%28v=vs.110%29.aspx

没有给我任何关于如何实现我的目标的线索。

appDomain.ProcessExit只是在进程退出时调用某些代码的机会=>不是一个好的选择

非常欢迎任何帮助或线索,谢谢!

1 个答案:

答案 0 :(得分:0)

您可以订阅正在退出的流程,但我不确定这是否有助于防止流程被杀。

MSDN info

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.
}