2011-08-30 08:32:07 +0000 2011-08-30 08:32:07 +0000
104
104

Wie kann ich eine durch Richtlinien erzwungene Bildschirmsperre in Windows 7 verhindern?

Unser firmeneigener BOFH erlegt die Einstellung der Bildschirmsperre mit einer lächerlich kurzen Verzögerung auf. Es ist frustrierend und kontraproduktiv.

Gibt es eine Möglichkeit, die automatische Bildschirmsperre zu verhindern? Ich würde davon ausgehen, dass es keine Möglichkeit gibt, die durch Richtlinien erzwungene Einstellung außer Kraft zu setzen, aber vielleicht gibt es eine Software, die die Benutzeraktivität nachahmt.

Ich frage nur, bevor ich ein ewiges Mausrad einstelle. (Haben Sie es verstanden?)

Antworten (11)

92
92
92
2013-04-10 17:22:35 +0000

Wenn der Windows Media Player noch installiert ist, können Sie ein Video in einer Schleife abspielen und minimieren (die Beispielvideos “Wildtiere” funktionieren dafür gut). Solange ein Video abgespielt wird, wird der Bildschirm standardmäßig nicht gesperrt.

89
89
89
2014-11-05 18:54:27 +0000

Ich verwende ein Skript mit dem I-Titel idle.vbs:

Dim objResult

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

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

Alle sechs Sekunden wird die Numlock-Taste auf der Tastatur schnell umgeschaltet, was Windows glauben lässt, dass jemand mit der Tastatur interagiert, wodurch die Bildschirmsperre verhindert wird. Dies läuft auf Vanilla-Fenstern, Sie brauchen keine Entwicklungs- oder Skript-Tools, um es zu benutzen, erstellen Sie einfach eine Textdatei mit der Endung .vbs und doppelklicken Sie darauf (oder platzieren Sie es in Ihren Startup-Elementen).

Bearbeiten: Sie können dieses Skript in Ihre Startup-Elemente mit

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

einfügen Weitere Informationen über das Choclatey (choco) CLI-Installationsprogramm finden Sie unter: https://chocolatey.org/

18
18
18
2015-06-24 17:31:31 +0000

Eine weitere Möglichkeit ist das Freeware-Programm Caffeine . Es ist auch für die kommerzielle Nutzung kostenlos. Von der Homepage des Programms:

Wenn Sie Probleme mit dem Sperren oder Einschlafen Ihres PCs haben, hält Koffein ihn wach. Es funktioniert, indem es alle 59 Sekunden einen Tastendruck simuliert, so dass Ihr Rechner denkt, Sie arbeiten immer noch an der Tastatur, also den Bildschirm nicht sperrt oder den Bildschirmschoner aktiviert.

Caffeine funktioniert, indem es alle 59 Sekunden ein F15-Tastendruck-Ereignis simuliert. Von allen verfügbaren Tastenkombinationen ist F15 wahrscheinlich die am wenigsten aufdringliche (ich habe noch nie eine PC-Tastatur mit dieser Taste gesehen!) und am wenigsten geeignet, Ihre Arbeit zu stören.

Mit dieser Standardlösung können Sie auch steuern, wann sie aktiviert und wann sie deaktiviert werden soll:

Ein Doppelklick auf das Programmsymbol leert die Kaffeekanne, was das Symbol darstellt, und deaktiviert das Programm vorübergehend. Ein erneuter Doppelklick füllt die Kanne wieder auf und hält Ihre Maschine wach.

7
7
7
2011-08-30 14:59:16 +0000

Sie können ein Skript AutoIt erstellen, um entweder kontinuierlich eine unbenutzte Taste zu drücken (z. B. die Num-Sperre oder die Bildlaufsperre umzuschalten), eine Minute oder so zu schlafen und zu wiederholen. Wenn Sie die Tastatur viel benutzen, können Sie sie alternativ dazu veranlassen, die Maus um ein Pixel oder so in eine beliebige Richtung zu bewegen.

Wenn Sie nicht möchten, dass sie ständig läuft, können Sie das Skript auch als geplante Aufgabe starten (wenn Sie Zugriff haben), um es zu starten, nachdem der Computer einige Zeit inaktiv war.

Und dies ist ein sehr einfaches Skript, um eine unsichtbare Mausbewegung auszuführen, wenn Sie nicht in die AutoIt-Syntax gelangen wollen:

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

Dieses Skript bewegt den Mauszeiger um ein Pixel in die Richtung nach oben-links und kehrt ihn danach wieder zurück und schläft dann 9 Minuten (540000 Millisekunden) lang. Wenn das Skript ausgeführt wird, sehen Sie das AutoIt-Symbol in der Taskleiste. Sie können es anhalten, indem Sie mit der rechten Maustaste auf dieses Symbol klicken und die entsprechende Option wählen.

Um ein Skript zu erstellen, installieren Sie AutoIt, klicken Sie mit der rechten Maustaste in einen beliebigen Ordner und wählen Sie New > AutoIt v3 Script, geben Sie ihm einen Namen, klicken Sie mit der rechten Maustaste auf dieses neue Skript, wählen Sie Edit, fügen Sie den oben angegebenen Code ein und speichern Sie ihn. Sie können es sogar nach .exe kompilieren (wieder aus dem Kontextmenü), um es z.B. vom Windows-Scheduler aus zu starten.

5
5
5
2014-06-06 21:36:21 +0000

Es gibt eine Android-App namens “Timeout-Blocker”, die in einem Intervall vibriert und auf die Sie Ihre Maus legen können. Es besagt jedoch, dass man sie nicht bei der Arbeit benutzen soll. https://play.google.com/store/apps/details?id=com.isomerprogramming.application.timeoutblocker&hl=en

5
5
5
2013-03-09 03:28:45 +0000

Kompilieren Sie diese in Visual Studio oder C# Express und führen Sie sie von einer Eingabeaufforderung aus (oder doppelklicken Sie darauf). Erfordert .NET 4.0 oder höher. Es tut alles, wonach Sie suchen.

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;

        }
    }
}
2
2
2
2018-01-16 14:55:11 +0000

Ich benutze gerne einfache und integrierte Optionen ( keine zusätzliche Software ), wie ein Powershell-Skript (danke https://dmitrysotnikov.wordpress.com/2009/06/29/prevent-desktop-lock-or-screensaver-with-powershell/ ), das die “f15” als Schlüssel zum Erfolg benutzt (thx to caffeine. Es ist in der Tat am wenigsten störend)

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}")
}

Setzen Sie dies in ein myScriptName.ps1 und starten Sie es über eine Desktop-Verknüpfung oder die Befehlszeile:C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -nop "C:\Users\myUser\Desktop\myScriptName.ps1"

UPDATE: Vielleicht gab es eine Änderung vom Administrator, aber das funktioniert bei mir nicht mehr Jetzt muss ich ein Autohotkey-Skript von NBirnel verwenden: https://github.com/nbirnel/nosleep - diese Arbeit perfekt , weil sie die Maus bewegt (ohne die Arbeit abzulenken)

1
1
1
2014-12-30 08:17:36 +0000

In meinem Fall hat nur diese eine Zeile den Zweck erfüllt:

SendKeys.Send("{CAPSLOCK}");

Setzen Sie sie einfach in das Ereignis Timer_Tick und setzen Sie das Zeitintervall auf z.B. 60000ms.

1
1
1
2017-05-23 06:00:59 +0000

Mouse Jiggler könnte eine Option sein https://mousejiggler.codeplex.com/

-1
-1
-1
2018-10-03 15:01:08 +0000

Der richtige Weg, damit umzugehen, ist:

  • gehen Sie in die Registrierung, wo die Richtlinie steht
  • setzen Sie den Wert auf was auch immer Sie wollen
  • und ändern Sie die Berechtigungen des Registrierungsschlüssels
  • nur Schreibzugriff für alle außer Ihnen selbst verweigern.
-5
-5
-5
2013-11-15 03:17:15 +0000

Sie sollten die “Bildschirmsperre”/“Schlafmodus” über das Bedienfeld > Energieoptionen > Planeinstellungen ändern deaktivieren. Klicken Sie auf die Dropdown-Liste “Den Computer in den Ruhezustand versetzen” und wählen Sie “nie”.