Avvisa l'utente se tenta di disconnettersi


10

Voglio che un determinato utente locale non si disconnetta. mai. È molto simile a questa domanda stupida , tuttavia non mi interessa necessariamente se i pulsanti sono lì, voglio far apparire una finestra di messaggio che dice "Per favore non disconnettersi dalla console" con un pulsante "OK" che quindi annulla la disconnessione tentativo. Questo può essere fatto in uno script di disconnessione?

ci sono criteri di gruppo per disabilitare il pulsante di disconnessione nel menu iniziale e nella finestra di dialogo CTRL-ALT-CANC. Tuttavia, ciò che mi piacerebbe è più simile a http://msdn.microsoft.com/en-us/library/ms811998.aspx , che sembra non essere nel server 2008 R2? O mi manca?

Ho anche provato a disabilitare il pulsante di disconnessione all'avvio , ma non funziona, come sottolineato da Matt su questa domanda simile

È possibile creare uno script di disconnessione che visualizza una finestra di dialogo che avverte l'utente di non disconnettersi e quindi annulla la disconnessione?

Capisco che questo è un bisogno stupido - sfortunatamente non è in mio potere cambiare o respingere. Ho esaurito quelle opzioni. Sentiti libero di ottenere un sacco di voti su un commento che spiega che questo è davvero un piano stupido che ovviamente sta mitigando un sintomo di molti problemi sistemici piuttosto che risolvere qualsiasi cosa. Comprendo appieno che questo corso d'azione sta effettivamente creando problemi. Voglio che sia fatto così da poter concludere questo contratto e non lavorare mai più con loro.


18
Questo è davvero un piano stupido che ovviamente attenua un sintomo di molti problemi sistemici piuttosto che risolvere qualsiasi cosa. Questo corso d'azione in realtà sta creando problemi. Fai con questo contratto e non lavorare mai più con loro.
Michael Hampton,

1
Oltre ad essere una cosa sciocca da provare e da fare, è anche qualcosa che altre persone non trarrebbero beneficio dal sapere come fare. Creerà solo problemi, quindi il voto si chiuderà.
HostBits,

3
Anche se concordo sul fatto che sia un piano sciocco e non conosco il motivo, posso dire che potrei beneficiare di una soluzione simile. Tutti abbiamo a che fare con stupidi software legacy come un "demone" che ha una finestra @ # $ @ # $ @ creata in VB6 e non funziona come un servizio perché ha tutti i tipi di messaggio pop-up e finisci con uno script AuthoHotKey facendo clic su OK ogni volta che si presentano ... quindi impedire la disconnessione sarebbe utile ...
ETL

1
@MichaelHampton, signore, sono assolutamente corretti. Avrei dovuto aggiungere: "Voglio fare questo in modo da poter essere pagato, e quindi non lavorare mai più per loro". come ha sottolineato ETL, ci sono tutti i tipi di cattiveria legacy là fuori ... e come ha sottolineato Cheekaleak, qualsiasi risposta a questa domanda contribuirà alla cattiveria nel mondo. Detto questo, voglio ancora hackerare questo ed essere fatto.
dfstandish,

Dov'è il bisogno di root? Se fosse come me e avessi bisogno di un processo / app da eseguire come quell'utente con una sessione desktop interattiva, allora potresti guardare Firedaemon e configurare un servizio che gira come quell'utente per
quell'app

Risposte:


14

Quando ho avuto occasione di farlo, il modo in cui ho effettivamente disabilitato la disconnessione (e l'arresto / riavvio) è facendo tre cose.

  1. Utilizzare oggetti Criteri di gruppo o criteri di sicurezza locali (o un'impostazione del Registro di sistema) per rimuovere l'opzione di disconnessione disponibile tramite il menu Ctrl+ Alt+ Del.

    • Per rimuovere l'opzione dal menu Ctrl+ Alt+ Del, è necessario accedere a User Configuration-> Administrative Templates-> System-> Ctrl+Alt+Del Optionse abilitare il Remove Logoffcriterio.

  2. Utilizzare gli oggetti Criteri di gruppo o le politiche di sicurezza locali (o un'impostazione del Registro di sistema) per configurare le opzioni di disconnessione, riavvio e spegnimento disponibili tramite il menu Start.

    • Per modificare il comportamento predefinito del "pulsante di accensione", selezionare User Configuration-> Administrative Templates-> Start Menu and Taskbare abilitare il Change Start Menu power buttoncriterio.
      • Impostarlo su Lockè probabilmente quello che stai cercando.
    • Per rimuovere i pulsanti di spegnimento / riavvio / sospensione / ibernazione dal menu Start, è necessario accedere a User Configuration-> Administrative Templates-> Start Menu and Taskbare abilitare ilRemove and prevent access to the Shut Down, Restart, Sleep and Hibernate command
    • Per rimuovere l'opzione di disconnessione, accedere a User Configuration-> Administrative Templates-> Start Menu and Taskbare abilitare il Remove Logoff on the Start Menucriterio

  3. Cambia le autorizzazioni su shutdown.exee logoff.exe(grazie, Ryan!) In modo che nessun account utente possa eseguirlo. (Se non devi preoccuparti degli utenti che eseguono shutdown.exeda una riga di comando, potresti saltare questo.)

    • (Di solito lascio un account di servizio o il mio account amministratore di backup con autorizzazioni in modo da poterlo modificare di nuovo se necessario, con un minimo sforzo).
    • Per impostazione predefinita, è attivo C:\Windows\systm32\e le autorizzazioni consentono agli utenti e agli amministratori di leggere ed eseguire, ma si riservano il pieno controllo di SYSTEMe Trusted Installer.
    • Trusted Installer è anche il proprietario, quindi per modificare le autorizzazioni è necessario assumere la proprietà con un account amministrativo.

Una volta che hai finito con tutto ciò, non c'è modo di disconnettersi, riavviare, spegnere, ibernare o sospendere il computer senza fare un bel po 'di sforzo ... o scollegare il cavo di alimentazione.

Ora il menu di avvio del mio server è simile all'immagine seguente (e il cambio utente consente solo a un altro utente di accedere):

inserisci qui la descrizione dell'immagine

E il menu Ctrl+ Alt+ Delappare come:

inserisci qui la descrizione dell'immagine


3
La salsa segreta qui è che è necessario modificare il comportamento del "pulsante di accensione" - se non si disabilita la disconnessione non avrà alcun effetto.
thekbb,

1
logoff.exe .....
Ryan Ries il

4

Preferivo aggiungere questo come commento, ma grazie alle politiche del sito, non devo commentare ...

Per quanto riguarda gli script di disconnessione, non so cosa si possa fare. Ma in un'applicazione Windows Form C #, è possibile registrarsi a SystemEvents come SessionSwitch e SessionEnding. L'ultimo fornisce anche una proprietà Cancel in EventArgs. Tale applicazione .Net potrebbe essere d'aiuto nel tuo caso, ma ovviamente l'utente potrebbe prima chiudere l'applicazione (o ucciderla dal TaskManager) e quindi disconnettersi.

A proposito: sì, so che a volte bisogna fare cose così stupide: ci sono aziende di software che scrivono programmi che dovrebbero essere servizi di Windows, ma che funzionano con una GUI in una sessione interattiva ...


2
Un breve programma che visualizza una finestra di dialogo e quindi annulla l'arresto funzionerebbe, ma potrebbe anche essere ucciso da Task Manager, che potrebbe vanificare lo scopo.
Michael Hampton,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.