有没有办法设置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只是在进程退出时调用某些代码的机会=>不是一个好的选择
非常欢迎任何帮助或线索,谢谢!
答案 0 :(得分:0)
您可以订阅正在退出的流程,但我不确定这是否有助于防止流程被杀。
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.
}