Eu tive esse problema exato com alguém na minha rede há algum tempo.
Em um esforço para controlar esse comportamento durante o horário de funcionamento, eu escrevi o script abaixo. Ao executar isso em um shell Cygwin com as tarefas shceduled no Windows, você pode executá-lo sempre que quiser e fazer com que o agendador simplesmente mate o trabalho quando quiser que os programas do usuário voltem a funcionar. Isso não funcionará em uma caixa unix, pois é um script híbrido que usa comandos do Windows e um script de shell BASH. Também vale a pena notar, você pode configurá-lo como um trabalho CRON no shell cygwin, se você quiser evitar o uso do agendador de janelas.
Pré-requisitos
1) Cygwin carregado em um sistema que você controla na mesma rede que o usuário. (Eu usei meu sistema de administração para isso, pois já tenho o Cygwin)
2) Uma conta de usuário com privilégios administrativos no sistema em que o software está sendo executado.
Background
Eu recomendo não usar a conta de administrador para o domínio ou o administrador local como se o seu script estivesse comprometido, isso exporia suas senhas de administrador. Criando uma conta local discreta. Eu recomendo usar um que soe como é do fornecedor do computador.
Detalhamento detalhado do script
Neste exemplo, HQ-WS-599 é a estação de trabalho em que o usuário está em hpassistant é a conta de usuário local que criei neste sistema de usuários e / P faz referência à senha da conta. warcraft.exe e os dois listados abaixo no código são os três programas que decidi restringir. A variável sleepytime determina com que frequência ela tenta alcançar a rede e mata os processos que você definiu.
Como isso funcionou?
Quando comecei a usar esse script, descobri que ele funciona como um campeão. Mesmo um usuário extremamente tecnicamente experiente terá dificuldade em descobrir este. Com exceção de um sniffer ou outra ferramenta perspicaz, você não verá nenhuma evidência de execução diferente do processo que será cancelado espontaneamente sem notificação.
Agora, para o script ...
#!/usr/bin/bash
var0=1
LIMIT=1
SleepyTime=45
while [ "$var0" -eq "$LIMIT" ]
# ^ ^
# Spaces, because these are "test-brackets" . . .
do
taskkill /S HQ-WS-599 /U hpassistant /P hpassistpw!2 /IM "warcraft.exe"
taskkill /S HQ-WS-599 /U hpassistant /P hpassistpw!2 /IM "solataire.exe"
taskkill /S HQ-WS-599 /U hpassistant /P hpassistpw!2 /IM "freecell.exe"
# ^ Space, to separate printed out numbers.
# var0='expr $var0 + 1' # var0=$(($var0+1)) also works.
# var0=$((var0 + 1)) also works.
# let "var0 += 1" also works.
sleep $SleepyTime
done # Various other methods also work.
echo
exit 0
Espero que você ache isso útil