|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Поставить юзверя на "паузу" |
|
|
Любой язык - Поставить юзверя на "паузу"
|
Новый участник Сообщения: 48 |
Профиль | Отправить PM | Цитировать
Всем привет.
Идея возникла из обсуждения http://forum.ixbt.com/topic.cgi?id=22:91540:294#294. Я там под ником cheloyekus Можно ли сделать скрипт, чтобы при выходе из пользователя (смене) все его процессы ставились на "паузу" и выгружались из памяти, а при входе "размораживались"? |
|
Отправлено: 21:56, 10-12-2019 |
Новый участник Сообщения: 48
|
Профиль | Отправить PM | Цитировать Так можно "притормозить" все процессы "chrome.exe" пользователя "user":
tasklist /FI "username eq user" | findstr /i "chrome.exe" > userlist.txt for /F "TOKENS=2" %a in ('type userlist.txt') do (pssuspend %a) Не знаю насколько правильно, просто подсмотрел данный метод отбора на одном форуме. Поскольку в текствоый файл вноситятся не только названия процессов и их "пиды", может быть так, что переменная %а совпадет не с пидом, а с размером процесса и стопарнется какой-нибудь нужный процесс, а так х.з. Для заморозки используется русиновичевская "PsSuspend", закинутая в системный каталог Вопрос с выгрузкой из памяти остается открытым.. |
Последний раз редактировалось vombat2, 23-12-2019 в 11:31. Отправлено: 08:31, 16-12-2019 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата vombat2:
Как только у какого-то приложения возникнут обширные потребности в памяти (при нехватке последней), так сразу страницы памяти, занятые suspended-процессом, начнут активно сбрасываться в файл подкачки. |
|
Отправлено: 17:37, 16-12-2019 | #22 |
Новый участник Сообщения: 48
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
|
Последний раз редактировалось vombat2, 17-12-2019 в 03:07. Отправлено: 03:00, 17-12-2019 | #23 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата vombat2:
Цитата vombat2:
|
||
Отправлено: 03:08, 17-12-2019 | #24 |
Новый участник Сообщения: 48
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Цитата:
|
||
Отправлено: 06:01, 17-12-2019 | #25 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Коллега, Вы можете верить во что угодно, дело Ваше. Что же до Руссиновича и «некоей отдельной области "модифицированной" памяти», то я лично предпочитаю этого: RAMMap - Windows Sysinternals | Microsoft Docs, этого: Troubleshooting with the Windows Sysinternals Tools - Mark E. Russinovich, Aaron Margosis - Google Книги, этого: Windows Sysinternals Administrator's Reference - Aaron Margosis, Mark E. Russinovich - Google Книги и этого: Windows Internals - Mark E. Russinovich, David A. Solomon, Alex Ionescu - Google Книги Руссиновича — тому.
|
Отправлено: 17:15, 17-12-2019 | #26 |
Новый участник Сообщения: 48
|
Профиль | Отправить PM | Цитировать Докумекал более-менее презентабельный вариант сей задумки. Подсказали на Руборде прожку EmptyStandbyList (от автора все того же Process Hacker'а), позволяющую выгружать все "workingsets" из памяти - не совсем то, но тоже пойдет для данного случая (EmptyStandbyList workingsets). Что в итоге - 2 скрипта (для засыпания и пробуждения юзера) и программки PsSuspend, EmptyStandbyList. Проги нужно закинуть в system32.
SuspendUser.bat ::Заморозка всех процессов текущего пользователя в текущей сессии, за исключением тех, которые могут вызвать глюки или тормоза (explorer, taskhost и т.д.) for /f "tokens=2 delims=," %%a in ('tasklist/fi "USERNAME eq %username%" /fi "SESSIONNAME eq Console" /nh /fo csv^|findstr/i /v "explorer taskhost conhost cmd etd"') do pssuspend %%a ::Включение запланированной задачи "разморозки" процессов при разблокировке сеанса пользователя SCHTASKS /Change /TN "Resume%username%" /enable ::Выход в "окно блокировки" RunDll32 user32.dll,LockWorkStation ::Освобождение памяти SCHTASKS /Run /TN EmptyWS for /f "tokens=2 delims=," %%a in ('tasklist/fi "USERNAME eq %username%" /fi "sessionname eq console" /nh /fo csv^|findstr/i /v "explorer taskhost conhost cmd etd"') do pssuspend -r %%a ::Отключение запланирванной задачи "разморозки", чтобы не срабатывала в пустую SCHTASKS /Change /TN "Resume%username%" /disable Затем нужно открыть планировщик (taskschd.msc) под админом, и создать там задачу под именем "EmptyWS", без триггеров, в действии указать "EmptyStandbyList.exe", параметр "workingsets". После нужно файлу этой задачи (в папке C:\Windows\System32\Tasks) в совйствах безопасности добавить доступ для группы "пользователи". Задача "EmptyWS" нужна для запуска "EmptyStandbyList workingsets" с админскими правами под обычным пользвателем. Далее выносим ярлык SuspendUser.bat на рабочий стол, запускать, лучше со свернутыми окнами. У меня работает (на Win 8.1, Win7) почти без глюков, за исключением некоторых приложений. Автокад "падает" после таких манипуляций, хотя многие программы спокойно "засыпают" и "просыпаются" - браузеры, Google Earth, игра Dirt4.. |
Последний раз редактировалось vombat2, 25-12-2019 в 16:08. Отправлено: 14:23, 25-12-2019 | #27 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Прочее - Как поставить "приоритет" на интернет в играх? | Fufel1337 | Сетевые технологии | 3 | 13-01-2017 20:13 | |
Debian/Ubuntu - Куда поставить Ubuntu - "ЗА" и "ПРОТИВ" | vovikrus | Общий по Linux | 8 | 23-03-2014 07:45 | |
[решено] При открытие "vk.com", "выкидывает" на страницу для "разморозки страницы" | sovenok | Лечение систем от вредоносных программ | 17 | 21-11-2013 04:09 | |
"Чёрный экран или как поставить дрова на видеокарту ?!" | poxer_face_nizza@vk | Видеокарты | 2 | 22-09-2013 17:56 | |
Запретить/удалить пункт "Programs" ("Программы") из меню кнопки "Start" ("Пуск") | submaster | Microsoft Windows NT/2000/2003 | 5 | 13-09-2006 12:29 |
|