Показать полную графическую версию : [решено] Автозапуск при разблокировке, входе и в зависимости от RDP
Можно как-то сделать, чтоб содержимое shell:startup автоматически запускалось при каждом разблокировании системы?
Поясню: на компе два юзера, часть софта не может висеть в процессах одновременно у двух юзеров. создал батник, где процессы убиваются и открываются вновь уже для вошедшего юзера.
Таким образом, если я поюзал комп, заблокировал, пришла жена, поюзала - все впорядке, у нее после меня содержимое shell:startup запускается.
Но если она заблочит комп и вновь за него сяду я под своей учеткой - автозапуск в shell:startup уже не срабатывает, ибо я не заново вошел в систему, а разблокировал её под собой.
Как сделать так, чтоб нужный мне батник выполняелся при КАЖДОМ разблокировании компа под текущим юзером?
Включите аудит Computer Configuration-Windows Settings-Security Settings-Advanced Audit Policies-Logon/Logoff-Audit Other Logon/Logoff Events
Запускайте из планировщика по событию 4801 https://docs.microsoft.com/windows/security/threat-protection/auditing/event-4801
Для начала пробую перейти в принципе с shell:startup на Планировщик ,создал задание на "При входе", до "При разблокировке" пока не дошел.
Выяснилось, что запуск не срабатывает под двумя пользователями. Либо под одним, либо под другим.
Как правильно его настроить, под каким юзером запускать нужно? Если под Dmitrii, то скрипт срабатывает только при входе в систему Dmitrii. Если войдет другой юзер, под ним не срабатывает.
Если под "Администраторы", то запуск происходит только под тем, кто последний раз заходил в задачу и нажимал "Ок"
Analog, установить пользователя (а не группу, как вы сделали) - выполнять для всех пользователей. Либо для каждого пользователя свое задание - зависит от конкретной задачи, вам виднее.
Получилось, спасибо.
А есть возможность не выполнять автозапуск, если учетка подключается через RDP?
Поставил RDP Wrapper - для второго юзера при входе срабатывает автозапуск и у предыдущего часть софта убивается. То есть, можно это запретить в случае коннекта именно по RDP?
А есть возможность не выполнять автозапуск, если учетка подключается через RDP? »
Надо скриптовать (http://forum.oszone.net/forum-102.html). Наверное, можно проверять вывод quser, и если sessionname для этого юзера не console, то это RDP.
P.S. Я спросил Василия Гусева, нет ли простого способа на пошике. Теперь есть;)
Теперь есть;) »
сложновато для меня.
указанный файлик - что с ним делать? PowerShell не понимает.
указанный файлик - что с ним делать? PowerShell не понимает. »
Для начала — переименовать из .txt в .ps1.
Да, так не ругается. Теперь нужно этот скрипт в Планировщике поместить в Действия, перед bat-ником который мне убивает\перезапускает софт?
Analog, теперь у вас следующий уровень квеста - вам надо все на PowerShell перевести:)
Я смотрю вы файлы складываете прямо в корень С - плохая идея (видимо, с выключенным UAC работаете).
В консоли можете так экспериментировать, с учетом того, что скрипты в C:\scripts, а вы туда перешли cd c:\scripts
Для начала выясните свой SID
Get-LocalUser | fl *
Дальше дотсорсинг скрипта
. GetLogonSession.ps1
и выполнение функции
$session = Get-LogonSession
$session
Будет список всех сессий.
Теперь фильтруете по своему SID
$session | Where-Object {$_.SID -eq 'S-1-5-21-xxxxxxxx-xxxxxxxx-xxxxxx-xxxx'}
Вам нужно исключить RDP, т.е. RemoteInteractive (если вы не подключены к RDP, в списке такой сессии нет).
$rdp = $session | Where-Object {$_.SID -eq 'S-1-5-21-xxxxxxxx-xxxxxxxx-xxxxxx-xxxx' -and $_.LogonType -eq 'RemoteInteractive'}
$rdp -eq $null
True
И теперь запускаете свои программы, если условие соблюдается
if ($rdp -eq $null) {
Start-Process notepad
Start-Process calc}
Для планировщика же дописываете в скрипт
$session = Get-LogonSession
$rdp = $session | Where-Object {$_.SID -eq 'S-1-5-21-xxxxxxxx-xxxxxxxx-xxxxxx-xxxx' -and $_.LogonType -eq 'RemoteInteractive'}
if ($rdp -eq $null) {
Start-Process notepad
Start-Process calc}
И настраиваете запуск.
Программа или сценарий: powershell
Аргументы: -ExecutionPolicy Bypass -WindowStyle Hidden -file C:\scripts\GetLogonSession.ps1
Как-то так. См. также Запуск без моргания окон PowerShell (http://www.outsidethebox.ms/20351/#_Toc139)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.