Avisar o usuário se ele tentar fazer logoff

10

Quero que um determinado usuário local não faça logoff. sempre. É muito parecido com essa pergunta boba , no entanto, eu não me importo necessariamente se os botões estão lá. Quero abrir uma caixa de mensagens com a mensagem "Por favor, não faça logoff do console" com um botão "OK" que cancela o logoff tentativa. Isso pode ser feito em um script de logoff?

existem políticas de grupo para desativar o botão de logoff no menu Iniciar e na caixa de diálogo CTRL-ALT-DEL. No entanto, o que eu gostaria é mais como http://msdn.microsoft.com/en-us/library/ms811998.aspx , que parece não estar no servidor 2008 R2? Ou estou sentindo falta disso?

Eu até tentei desativar o botão de logoff no início , mas ele não funciona, como apontado por Matt nesta pergunta semelhante

É possível criar um script de logoff que exiba uma caixa de diálogo avisando o usuário para não efetuar logoff e, em seguida, cancele o logoff?

Entendo que essa é uma necessidade estúpida - infelizmente não está ao meu alcance mudar ou recuar. Eu esgotei essas opções. Sinta-se à vontade para receber uma tonelada de votos em um comentário explicando que esse é realmente um plano tolo que obviamente está atenuando um sintoma de muitos problemas sistêmicos, em vez de resolver qualquer coisa. Compreendo perfeitamente que esse curso de ação esteja criando problemas. Quero que isso seja feito para que eu possa concluir este contrato e nunca mais trabalhar com eles novamente.

dfstandish
fonte
18
Este é realmente um plano tolo que obviamente está atenuando um sintoma de muitos problemas sistêmicos, em vez de resolver qualquer coisa. Este curso de ação está realmente criando problemas. Termine com este contrato e nunca mais trabalhe com eles novamente.
Michael Hampton
1
Além de ser uma coisa boba de se tentar fazer, também é algo que outras pessoas não se beneficiariam de saber como fazer. Isso só vai criar problemas, então vote para fechar.
HostBits 27/02
3
Embora eu concorde que seja um plano tolo e não conheça o motivo, posso dizer que poderia me beneficiar de uma solução semelhante. Todos nós temos que lidar com softwares estúpidos e herdados, como um "deamon" que possui uma janela @ # $ @ # $ @ feita no VB6 e não funciona como um serviço, porque tem todo o tipo de mensagem pop-up e você acaba com um clique roteiro AuthoHotKey em OK sempre que eles vêm para cima ... para prevenir o logoff seria útil ...
ETL
1
@ MichaelHampton, senhor, está absolutamente correto. Eu deveria ter acrescentado: "Quero fazer isso para poder ser pago e nunca mais trabalhar para eles novamente". como ETL apontou, existem todos os tipos de maldade herdada por aí ... e como Cheekaleak apontou, qualquer resposta a essa pergunta contribuirá para a maldade no mundo. Dito isto, ainda quero invadir isso e pronto.
dfstandish
Onde está a necessidade raiz? Se fosse como eu e você precisasse de um processo / aplicativo para executar como usuário com uma sessão de área de trabalho interativa, poderia obter o Firedaemon e configurar um serviço que executa como esse usuário para esse aplicativo com a Sessão 0.
TheCleaner

Respostas:

14

Quando tive a oportunidade de fazer isso, a maneira como efetivamente desabilitei o logoff (e desligue / reinicie) é fazendo três coisas.

  1. Use GPOs ou políticas de segurança local (ou uma configuração do registro) para remover a opção de logoff disponível no menu Ctrl+ Alt+ Del.

    • Para remover a opção do menu Ctrl+ Alt+ Del, você precisa navegar para User Configuration-> Administrative Templates-> System-> Ctrl+Alt+Del Optionse ativar a Remove Logoffpolítica.

  2. Use GPOs ou políticas de segurança local (ou uma configuração do Registro) para configurar as opções disponíveis de logoff, reinicialização e desligamento disponíveis no Menu Iniciar.

    • Para alterar o comportamento padrão do "Botão liga / desliga", navegue para User Configuration-> Administrative Templates-> Start Menu and Taskbare ative a Change Start Menu power buttonpolítica.
      • Defini-lo como Lockprovavelmente é o que você está procurando.
    • Para remover os botões desligar / reiniciar / dormir / hibernar do menu Iniciar, você precisa navegar para User Configuration-> Administrative Templates-> Start Menu and Taskbare ativar oRemove and prevent access to the Shut Down, Restart, Sleep and Hibernate command
    • Para remover a opção de logoff, navegue para User Configuration-> Administrative Templates-> Start Menu and Taskbare ative a Remove Logoff on the Start Menupolítica

  3. Altere as permissões shutdown.exee logoff.exe(obrigado, Ryan!) Para que nenhuma conta de usuário possa executá-lo. (Se você não precisa se preocupar com usuários executando a shutdown.exepartir de uma linha de comando, pode pular isso.)

    • (Normalmente, deixo uma conta de serviço ou minha conta de administrador de backup com permissões para poder alterá-la novamente, se necessário, com um mínimo de esforço).
    • Por padrão, está ativado C:\Windows\systm32\e as permissões permitem que usuários e administradores leiam e executem, mas reserva controle total para SYSTEMe Trusted Installer.
    • Trusted Installer também é o proprietário; portanto, para alterar as permissões, você deve se apropriar de uma conta administrativa.

Depois de concluir tudo isso, não há como fazer logoff, reiniciar, desligar, hibernar ou adormecer o computador sem fazer um grande esforço ... ou desconectar o cabo de alimentação.

Agora, o menu iniciar do meu servidor se parece com a imagem abaixo (e mudar de usuário apenas permite que outro usuário faça login):

insira a descrição da imagem aqui

E o menu Ctrl+ Alt+ se Delparece com:

insira a descrição da imagem aqui

HopelessN00b
fonte
3
O segredo aqui é que você deve alterar o comportamento do "botão liga / desliga" - se você não desativar o logoff não terá efeito.
thekbb
1
Logoff.exe .....
Ryan Ries
4

Eu preferia adicionar isso como um comentário, mas, graças às políticas do site, não devo comentar ...

Em relação aos scripts de logoff, não sei o que pode ser feito. Mas em um aplicativo C # Windows Forms, você pode se registrar em SystemEvents como SessionSwitch e SessionEnding. O último ainda fornece uma propriedade Cancel no EventArgs. Esse aplicativo .Net pode ajudar no seu caso, mas é claro que o usuário pode fechar o aplicativo primeiro (ou eliminá-lo no TaskManager) e, em seguida, ainda fazer logoff.

A propósito: sim, eu sei que essas coisas idiotas às vezes precisam ser feitas: existem empresas de software que escrevem programas que deveriam ser o Windows Services, mas rodando com uma GUI em uma sessão interativa ...

Bernhard Hiller
fonte
2
Um programa curto que exibe uma caixa de diálogo e cancela o desligamento funcionaria, mas também poderia ser eliminado do Gerenciador de Tarefas, o que poderia anular o objetivo.
Michael Hampton