Question Comment puis-je empêcher un verrouillage d'écran imposé par une stratégie dans Windows 7?


Notre société BOFH impose le verrouillage de l'écran avec un délai ridiculement court. C'est frustrant et contre-productif.

Est-il possible d'empêcher le verrouillage automatique de l'écran? Je suppose qu'il n'y a aucun moyen de remplacer le paramètre appliqué par la stratégie, mais il existe peut-être un logiciel qui imite l'activité de l'utilisateur.

Il suffit de demander avant de configurer une molette de souris perpétuelle. (trouver?)


72
2017-08-30 08:32


origine


Juste curieux de savoir ce que "ridiculement court" est? - Carl
Là sont des solutions de contournement comme les presseurs de touches et les déplaceurs de souris qui empêcheront le verrouillage de l'écran. Mais êtes-vous sûr de vouloir faire ça? Contourner la sécurité informatique est plus que probable à l’encontre de la politique de l’entreprise et peut constituer un délit de feu. - Keltari
15 minutes. OK, ce n'est pas si court que si vous êtes chez vous, pas dans un espace ouvert et que vous travaillez souvent sur un deuxième ordinateur. Comme je le suis, le verrouillage de l'écran est odieux. - Gabriel R.
Une solution de contournement consiste à ne pas bloquer l'écran de veille, mais à définir la période de grâce sur quelques heures. (Il s’agit du temps écoulé entre le démarrage de l’écran de veille et le moment où vous devez entrer un mot de passe. Habituellement, ce délai est de 5 secondes. Un coup sec de la souris lorsque l’économiseur d’écran se déclenche le désactive. vous pouvez avoir des heures sans mot de passe. - Hennes
La période de grâce ne fonctionne pas pour moi, alors que le script Est-ce que. Je suppose que ma politique d'entreprise désactive également le délai de grâce. - Dane Jacob Hampton


Réponses:


J'utilise un script que j'appelle idle.vbs:

Dim objResult

Set objShell = WScript.CreateObject("WScript.Shell")    

Do While True
  objResult = objShell.sendkeys("{NUMLOCK}{NUMLOCK}")
  Wscript.Sleep (6000)
Loop

Toutes les six secondes, cela permet de basculer rapidement la touche numlock sur le clavier, faisant croire à Windows que quelqu'un interagit avec le clavier, empêchant ainsi le verrouillage de l'écran. Cela fonctionne sous Windows, vous n'avez pas besoin d'outils de développement ou de script pour l'utiliser, créez simplement un fichier texte avec l'extension .vbs et double-cliquez dessus (ou placez-le dans vos éléments de démarrage).

Edit: vous pouvez mettre ce script dans vos éléments de démarrage avec

 choco install IdleVbs -source https://www.myget.org/F/joshrivers-utility/

Pour plus d'informations sur le Choclatey (choco) Veuillez consulter le programme d'installation de la CLI:

https://chocolatey.org/


58
2017-11-05 18:54



@JoshRivers une façon d’arrêter ce script, sans avoir à redémarrer l’ordinateur, serait bien aussi. - DeeJayh
@DeeJayh Je pense que vous pouvez simplement trouver l'instance de wscript.exe dans le Gestionnaire des tâches et la tuer. Il n'y a généralement pas beaucoup d'instances de cet exécutable en cours d'exécution. Vous pourriez probablement faire une solution automatisée pour la résiliation (stackoverflow.com/a/22325745) ou en mettant du code dans la section Do While qui recherche un fait externe. Comme le script créer un fichier au démarrage, puis vérifiez que le fichier existe dans While. De cette façon, vous pouvez simplement supprimer le fichier pour que le script se termine. (Je n'ai jamais quitté la chose, cependant, alors je lance le script et le tue très rarement avec le Gestionnaire des tâches). - JoshRivers
Sur Windows 10, un moyen simple de localiser le dossier de démarrage est d’afficher la fenêtre Démarrer-> Exécuter (WindowsKey + R, par exemple), puis taper shell:startup. Voir ce site pour plus d'informations thewindowsclub.com/startup-folder-in-windows-8 - buzz3791
Pour rechercher le script, recherchez Microsoft Windows Based Script Host dans votre gestionnaire de tâches. Ou ajoutez une colonne Nom du processus, puis recherchez wscript.exe. - JohnAndrews


Si Windows Media Player est toujours installé, vous pouvez lire une vidéo en boucle et la minimiser (les vidéos "Wildlife" fonctionnent correctement pour cela). Par défaut, tant qu'une vidéo est en cours de lecture, l'écran ne se verrouille pas.


69
2018-04-10 17:22



Je vous remercie! C'est la solution la plus simple et la plus efficace. (Je ne l'ai pas essayé cependant, j'ai quitté la société il y a quelque temps et j'essaie de rester à l'écart de Windows.) - Gabriel R.
Je confirme que cela fonctionne sur Windows XP en utilisant un fichier MP3 au lieu d'une vidéo. - Alaa Ali
Brillant hack!
Cela fonctionne également en utilisant VLC pour ceux qui le préfèrent sur Windows Media Player - ecoe
Super piratage J'ai créé une petite vidéo vierge et des scripts de traitement par lots pour démarrer cela. Fichiers à box.net et un blog à mon site personnel - Eric Cloninger


Une autre option est le freeware Caféine programme. Il est également gratuit pour un usage commercial. De la page d'accueil du programme:

Si vous avez des problèmes avec le verrouillage de votre PC ou votre sommeil, la caféine le maintiendra éveillé. Cela fonctionne en simulant une pression sur une touche toutes les 59 secondes, de sorte que votre machine pense que vous travaillez toujours au clavier, donc ne verrouille pas l'écran ou n'active pas l'écran de veille.

La caféine fonctionne en simulant un événement de touche F15 toutes les 59 secondes. De toutes les touches presses disponibles, F15 est probablement la moins intrusive (je n'ai jamais vu un clavier PC avec cette clé!), Et moins susceptible d'interférer avec votre travail.

Cette solution prête à l'emploi vous permet également de contrôler quand l'activer et de le désactiver:

Double-cliquer sur l'icône du programme vide la cafetière, ce que représente l'icône, et désactive temporairement le programme. Double-cliquer à nouveau pour remplir le pot et garder votre machine éveillée.


9
2018-06-24 17:31



J'attends le jour où un employé du gouvernement met de la caféine sur son ordinateur et il se trouve que quelque chose comme Shift + F15 lance les armes nucléaires ... - kazoni
Belle solution facile à utiliser, merci. Semble avoir à peu près autant d'options de ligne de commande que gcc, mais je n'ai pas besoin de les utiliser! - Sam Watkins


Vous pouvez créer un AutoIt script pour soit continuellement appuyer sur une touche inutilisée (par exemple, faire basculer le verrou numérique, verrouiller le défilement), dormir pendant une minute environ, et répéter. Si vous utilisez beaucoup le clavier, vous pouvez aussi déplacer la souris d'un pixel ou plus dans n'importe quelle direction.

Si vous ne voulez pas qu'il soit continuellement en cours d'exécution, vous pouvez également lancer le script en tant que tâche planifiée (si vous y avez accès) à lancer après un certain temps d'inactivité de l'ordinateur.

Et ceci est un script très simple pour effectuer un déplacement de la souris invisible, si vous ne voulez pas entrer dans la syntaxe AutoIt:

While True
   Local $pos = MouseGetPos()
   MouseMove($pos[0]-1, $pos[1]-1, 0)
   MouseMove($pos[0], $pos[1], 0)
   Sleep(540000)
WEnd

Ce script déplace le curseur de la souris d'un pixel vers le haut et la gauche, puis le renvoie, puis dort pendant 9 minutes (540000 millisecondes). Lorsque le script est en cours d'exécution, vous pouvez voir l'icône AutoIt dans la barre d'état. Vous pouvez l'arrêter en cliquant avec le bouton droit sur cette icône et en choisissant l'option correspondante.

Pour créer un script, installez AutoIt, cliquez avec le bouton droit de la souris dans un dossier et choisissez New > AutoIt v3 Script, nommez-le, cliquez avec le bouton droit sur ce nouveau script, choisissez Edit, collez le code fourni ci-dessus et enregistrez. Vous pouvez même le compiler pour .exe (à nouveau, à partir du menu contextuel) pour démarrer, par exemple, à partir de Windows Scheduler.


7
2017-08-30 14:59



Merci, je vais vérifier, semble plus simple qu'une configuration de la cage de la souris :) - Gabriel R.
Version précompilée de ce script AutoIt ici symantec.com/connect/downloads/... - JJS


Compilez ceci dans Visual Studio ou C # Express et exécutez-le à partir d'une invite de commande (ou double-cliquez dessus). Nécessite .NET 4.0 ou supérieur. Il fait tout ce que vous recherchez.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Threading;
using System.Runtime.InteropServices;
using System.Windows.Forms; 

namespace ImWorkin
{
    class Program
    {
        [FlagsAttribute]
        public enum EXECUTION_STATE : uint
        {
            ES_SYSTEM_REQUIRED = 0x00000001,
            ES_DISPLAY_REQUIRED = 0x00000002,
            ES_CONTINUOUS = 0x80000000
        }
        public SYSTEMTIMEOUTS TimeOuts
        {
            get { return sysTimeouts; }
        }
        public struct SYSTEMTIMEOUTS
        {
            public int BATTERYIDLETIMEOUT;
            public int EXTERNALIDLETIMEOUT;
            public int WAKEUPIDLETIMEOUT;
        }

        [DllImport("USER32.DLL", CharSet = CharSet.Unicode)]
        public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

        [DllImport("USER32.DLL")]
        public static extern bool SetForegroundWindow(IntPtr hWnd);

        [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        static extern EXECUTION_STATE SetThreadExecutionState(EXECUTION_STATE flags);

        [DllImport("user32.dll", SetLastError = true, EntryPoint ="SystemParametersInfo")]
        internal static extern int SystemParametersInfo(int uiAction, int uiParam, ref int pvParam, int fWinIni);

        private static System.Threading.Timer preventSleepTimer = null;
        public const int SPI_GETBATTERYIDLETIMEOUT = 252;
        public const int SPI_GETEXTERNALIDLETIMEOUT = 254;
        public const int SPI_GETWAKEUPIDLETIMEOUT = 256;
        public static int Counter = 0;
        public static int timeOutinMS = 0;
        public static int batteryIdleTimer;
        public static int externalIdleTimer;
        public static int wakeupIdleTimer;
        public static SYSTEMTIMEOUTS sysTimeouts;


        static void Main(string[] args)
        {
            Console.WriteLine("You are about to be workin!! Just a moment...I need to calculate a few values.");
            string dots = string.Empty;
            for (int i =2; i < 60; i++)
            {
                dots = "";
                for (int ii = 0; ii < i; ii++)
                {
                    dots = dots + ".";
                }
                Thread.Sleep(100);
                Console.Clear();
                Console.WriteLine("You are about to be workin!! Just a moment...I need to calculate a few values.");
                Console.WriteLine(dots);
            }


            GetSystemTimeOuts();


            if (timeOutinMS < sysTimeouts.BATTERYIDLETIMEOUT)
                timeOutinMS = sysTimeouts.BATTERYIDLETIMEOUT;
            if (timeOutinMS < sysTimeouts.EXTERNALIDLETIMEOUT)
                timeOutinMS = sysTimeouts.EXTERNALIDLETIMEOUT;
            if (timeOutinMS < sysTimeouts.WAKEUPIDLETIMEOUT)
                timeOutinMS = sysTimeouts.WAKEUPIDLETIMEOUT;

            if (timeOutinMS == 0)
                timeOutinMS = 30;

            DisableDeviceSleep();
            Console.WriteLine("");
            Console.WriteLine("");
            Console.WriteLine("OK. I have calculated your computers timeout periods and set the   ");
            Console.WriteLine("necessary hooks. Your computer will not shut off the monitor, will");
            Console.WriteLine("show active in any chat programs,the screensaver is disabled and ");
            Console.WriteLine("the computer will not lock! Anyone looking at you eaither locally ");
            Console.WriteLine("or remotely will think you are hard at work.");
            Console.WriteLine("");
            Console.WriteLine("Now go do something fun...I got your back ;)");
            Console.WriteLine("Oh yeah....if you close this window OR press `q' in this ");
            Console.WriteLine("window you are going to have to actually work.");
            Console.WriteLine("");
            Console.WriteLine("");
            Console.WriteLine("This text will disappear in a 30 seconds. Just in case someone comes ");
            Console.WriteLine("by and reads your screen!");
            Console.WriteLine("");
            Console.WriteLine("");
            Console.WriteLine("Need custom coding? Kenneth.gore@gmail.com");
            while (Console.KeyAvailable == false)
            {
                Thread.Sleep(250);
                ConsoleKeyInfo cki = Console.ReadKey(true);

                if (cki.KeyChar == 'q')
                    break;
            }

        }


        public static void DisableDeviceSleep()
        {
           SetThreadExecutionState(EXECUTION_STATE.ES_SYSTEM_REQUIRED | EXECUTION_STATE.ES_DISPLAY_REQUIRED | EXECUTION_STATE.ES_CONTINUOUS);
           preventSleepTimer = new System.Threading.Timer(new TimerCallback(PokeDeviceToKeepAwake), null, 0, timeOutinMS * 1000);
        }

        public static void EnableDeviceSleep()
        {

           preventSleepTimer.Dispose();
           preventSleepTimer = null;

        }

        private static void PokeDeviceToKeepAwake(object extra)
        {

            Counter++;
            try
            {
                   SetThreadExecutionState(EXECUTION_STATE.ES_SYSTEM_REQUIRED | EXECUTION_STATE.ES_DISPLAY_REQUIRED | EXECUTION_STATE.ES_CONTINUOUS);
                   IntPtr Handle = FindWindow("SysListView32", "FolderView");

                   if (Handle == IntPtr.Zero)
                   {
                       SetForegroundWindow(Handle);
                       SendKeys.SendWait("%1");
                   }

                   if (Counter > 1)
                       Console.Clear();
            } 
            catch 
            {

            }
        }

        public static void GetSystemTimeOuts()  
        {
            sysTimeouts.BATTERYIDLETIMEOUT = -2;
            sysTimeouts.EXTERNALIDLETIMEOUT = -2;
            sysTimeouts.WAKEUPIDLETIMEOUT = -2;


            if (SystemParametersInfo(SPI_GETBATTERYIDLETIMEOUT, 0, ref batteryIdleTimer, 0) == 1)
                sysTimeouts.BATTERYIDLETIMEOUT = batteryIdleTimer;
            else
                sysTimeouts.BATTERYIDLETIMEOUT = -1;

            if (SystemParametersInfo(SPI_GETEXTERNALIDLETIMEOUT, 0, ref externalIdleTimer, 0) == 1)
                sysTimeouts.EXTERNALIDLETIMEOUT = externalIdleTimer;
            else
                sysTimeouts.EXTERNALIDLETIMEOUT = -1;



            if (SystemParametersInfo(SPI_GETWAKEUPIDLETIMEOUT, 0, ref wakeupIdleTimer, 0) == 1)
                sysTimeouts.WAKEUPIDLETIMEOUT = wakeupIdleTimer;
            else
                sysTimeouts.WAKEUPIDLETIMEOUT = -1;


        }
    }
}

5
2018-03-09 03:28



Désolé .... dans le post ci-dessus tout après la phrase "Recherche". est du code et devrait être compilé. Il n'a pas formaté correctement. Le code montre un pInvoke plutôt sympa pour les personnes intéressées. Btw .... après compilé, je viens de le mettre dans mon chemin quelque part comme c: \ windows. De cette façon, si je suis à une invite de commande, je peux taper ImWorkin et je vais bien :) - user205533
Vous pouvez modifier votre réponse en cliquant sur le bouton modifier lien ci-dessous. - Dennis
veuillez modifier votre première réponse, puis supprimez-la. - teylyn
WTF se lève avec le "Juste un moment, je calcule quelques valeurs!" boucle factice? - KalEl
En réponse au code c #, il est généralement utilisé pour donner crédit à l'auteur. Cela se trouve être moi. Je crois que j'ai posté cela il y a presque deux ans sur la pile Overflow.


Il y a une application Android appelée "Timeout Blocker" qui vibre à un intervalle et vous pouvez y placer votre souris. Il dit de ne pas l'utiliser au travail cependant. https://play.google.com/store/apps/details?id=com.isomerprogramming.application.timeoutblocker&hl=fr


5
2018-06-06 21:36





Mouse Jiggler pourrait être une option: https://mousejiggler.codeplex.com/


1
2018-05-23 06:00



Cela fonctionne très bien :) - sunil


J'aime utiliser facile et intégré options (pas de logiciel supplémentaire), comme un script PowerShell (merci https://dmitrysotnikov.wordpress.com/2009/06/29/prevent-desktop-lock-or-screensaver-with-powershell/) qui utilise le "f15" comme la clé du succès (merci à la caféine. Il est en effet le moins interférant)

param($minutes = 180)

write "... screen will be awake for $minutes"

 $myshell = New-Object -com "Wscript.Shell"

 for ($i = 0; $i -lt $minutes; $i++) {
 write "... screen will be awake for" ($minutes-$i)
 Start-Sleep -Seconds 60    
 $myshell.sendkeys("{F15}")
}

Placez ceci dans un myScriptName.ps1 et lancez-le via le raccourci ou la ligne de commande du bureau: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -nop "C:\Users\myUser\Desktop\myScriptName.ps1"


1
2018-01-16 14:55





Dans mon cas, cette seule ligne a fait l'affaire:

SendKeys.Send("{CAPSLOCK}");

Il suffit de le mettre dans le Timer_Tick événement et définir un intervalle de minuterie, par ex. 60000ms.


0
2017-12-30 08:17





Vous devez désactiver le "verrouillage d'écran" / "mode veille" du panneau de configuration> options d'alimentation> modifier les paramètres du plan. Elle clique sur le menu déroulant "Mettre l'ordinateur en veille" et sélectionne "jamais".


-6
2017-11-15 03:17



Les administrateurs de domaine peuvent avoir un verrouillage de l’écran par application de stratégie dans Windows. - Gabriel R.