Я быстро смотрю на код, показывающий, что SecurityManager можно использовать для предотвращения изменений. ;)
public static void setErr(PrintStream err) {
checkIO();
setErr0(err);
}
private static void checkIO() {
SecurityManager sm = getSecurityManager();
if (sm != null) {
sm.checkPermission(new RuntimePermission("setIO"));
}
}
Вы можете использовать Thread.currentThread (). GetStackTrace () для идентификации абонента.