В Windows можно использовать программу, чтобы сделать это, потому что кто-то записал программу, которая вставляет драйвер устройства в рабочее ядро, чтобы сделать это. По тому, как может быть опасно сделать это, потому что после закрытия дескриптора, который использовало поврежденное приложение, приложение не знает, что дескриптор был закрыт, и когда приложение открывает некоторый другой несвязанный объект, это не знает, что тот же дескриптор мог бы теперь относиться к некоторому другому несвязанному объекту. Вы действительно хотите уничтожить поврежденное приложение как можно скорее.
В Linux, конечно, можно использовать тот же вид техники. Запишите программу, которая вставляет модуль в рабочее ядро. Свяжитесь с модулем и скажите его который дескрипторы закрыться. Будет одинаково опасно сделать так.
Да, в ASP.NET время жизни статических полей предназначено для домена приложения (обратите внимание, что это немного отличается для универсальных типов).
Я бы рекомендовал использовать сеанс сервера для хранения данных, которые вы хотите связать с экземпляром сеанса клиентского браузера (логин пользователя). т.е.
Session["_groupID"] = Convert.ToInt16(Request.QueryString["GroupID"]);
вы можете получить его, выполнив:
short groupID = Convert.ToInt16(Session["_groupID"]);
Статические переменные имеют такое же время жизни, что и домен приложения, в котором они были созданы. Поэтому, если вы получите неправильные значения, могут быть какие-то проблемы в логике приложения или еще. Вы должны использовать SessionState для данных для каждого пользователя.
Неверно говорить, что статическая переменная существует во всем приложении. Фактически они существуют на двух разных уровнях
Приложение может содержать много доменов приложений, и это правда в нескольких типах приложений.
Если вы хотите сохранить пользовательские настройки, используйте переменную сеанса.
Вы можете потратить некоторое время, чтобы ознакомиться с тем, за что ключевое слово static отвечает в C #. Прочтите здесь: static на разных языках и MSDN здесь .