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

256586
Gabriel R.

Unser Firmen-BOFH erzwingt die Einstellung der Bildschirmsperre mit einer lächerlich kurzen Verzögerung. 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 die Richtlinie erzwungene Einstellung außer Kraft zu setzen, aber vielleicht gibt es eine Software, die die Benutzeraktivität nachahmt.

Ich frage nur, bevor ich ein perpetuales Mausrad aufstelle. (Kapiert?)

80
Nur neugierig, was "lächerlich kurz" ist? Carl vor 12 Jahren 0
Es gibt * Workarounds wie Tastendrucker und Mausbewegungen, die verhindern, dass der Bildschirm gesperrt wird. Möchten Sie das wirklich tun? Die Umgehung der IT-Sicherheit ist höchstwahrscheinlich gegen die Unternehmensrichtlinien und könnte eine strafbare Handlung darstellen. Keltari vor 12 Jahren 0
15 Minuten. OK, es ist nicht so kurz ... es sei denn, Sie sind zu Hause, nicht in einem offenen Raum und arbeiten oft auf einem zweiten Computer. So wie ich bin, ist die Bildschirmsperre unangenehm. Gabriel R. vor 12 Jahren 3
Eine halbe Problemumgehung besteht darin, den Bildschirmschoner nicht zu blockieren, sondern die Kulanzzeit auf einige Stunden zu setzen. (Dies ist die Zeit zwischen dem Start des Bildschirmschoners und der Zeit, die Sie zum Eingeben eines Kennworts benötigen. Normalerweise ist dies auf 5 Sekunden eingestellt. Ein schnelles Rütteln mit der Maus, wenn der Bildschirmschoner gerade startet, deaktiviert es jedoch. Allerdings mit einem höheren Wert Sie können Stunden ohne Passwort haben. Hennes vor 10 Jahren 0
[Die Schonfrist] (https://superuser.com/questions/329758/how-can-i-prevent-a-policy-enforced-screen-lock-in-windows-7/836346#comment880491_329758) funktioniert nicht für mich, während [das Skript] (https://superuser.com/a/836346/137079) dies tut. Ich gehe davon aus, dass meine Unternehmenspolitik auch die Nachfrist ausschaltet. Dane Jacob Hampton vor 6 Jahren 0
Spät zum Spiel hier, wollte aber meine Lösung hinzufügen. Da ich keine Administratorrechte für den PC habe, den ich bei der Arbeit verwende, und keines der Skripts oder Programme in diesem Thread für mich funktionierte (entweder durften sie nicht installiert werden oder funktionierte nicht), kaufte ich eine "USB Mouse Jiggle" Hardware von Amazon. Funktioniert wie ein Traum, nur 15 Dollar. Jeff Wright vor 5 Jahren 0

11 Antworten auf die Frage

75
omaha_brad

If Windows Media Player is still installed, you can play a video on loop and minimize it (the sample "Wildlife" videos work fine for this). By default, as long as a video is playing, the screen won't lock.

Vielen Dank! Dies ist die einfachste und effektivste Lösung. (Ich habe es jedoch nicht ausprobiert, ich habe das Unternehmen vor einer Weile verlassen und versuche, mich von Windows fernzuhalten.) Gabriel R. vor 11 Jahren 2
Ich bestätige, dass dies unter Windows XP mit einer MP3-Datei anstelle eines Videos funktioniert. Alaa Ali vor 10 Jahren 5
Brillanter Hack! vor 10 Jahren 3
Dies funktioniert auch mit VLC für diejenigen, die Windows Media Player bevorzugen ecoe vor 9 Jahren 3
Toller Hack. Ich habe ein kleines leeres Video und Batch-Skripts erstellt, um dies zu starten. Dateien bei [box.net] (https://app.box.com/s/khcc45viol53oswmzo3v) und einen Blogeintrag bei [meiner persönlichen Website] (http://www.ericcloninger.com/?p=578). Eric Cloninger vor 9 Jahren 3
@EricCloninger kann nicht mit dem W2k3 SP2 Media Player abgespielt werden; gute Idee kubanczyk vor 9 Jahren 1
@ kubanczyk Ich hatte einige Probleme mit WMP unter Windows 7, um in den Schleifenmodus von einem Skript aus zu starten, aber ich könnte das Video starten und dann manuell die Schleifenschaltfläche in der Steuerleiste auswählen. Eric Cloninger vor 9 Jahren 1
Funktioniert gut in Windows 7. Schöner Hack! neves vor 7 Jahren 2
Das Abspielen eines Videos beansprucht CPU- und Speicherressourcen ... Danijel vor 6 Jahren 0
Wenn Sie VLC verwenden, funktioniert dies nur, wenn das Videofenster nicht minimiert ist (es kann sich jedoch im Hintergrund befinden). Joe Mornin vor 6 Jahren 1
Dies funktioniert unter Windows 7, wenn ein MP3-Player im minimierten Media Player anstelle von Video abgespielt wird. Chris Jenks vor 5 Jahren 0
66
JoshRivers

Ich benutze ein Skript, das ich idle.vbs tippe:

Dim objResult  Set objShell = WScript.CreateObject("WScript.Shell")   Do While True objResult = objShell.sendkeys("") Wscript.Sleep (6000) Loop 

Alle sechs Sekunden wird die Num-Taste auf der Tastatur schnell umgeschaltet, wodurch Windows den Eindruck erhält, dass jemand mit der Tastatur interagiert, was die Bildschirmsperre verhindert. Dies läuft auf Vanilla-Fenstern. Sie benötigen keine Entwicklungs- oder Scripting-Tools, um es zu verwenden. Erstellen Sie einfach eine Textdatei mit der Erweiterung .vbs und doppelklicken Sie darauf (oder fügen Sie sie in Ihre Startelemente ein).

Bearbeiten: Sie können dieses Skript in Ihre Startobjekte einfügen

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

Weitere Informationen zum chocoCLI-Installationsprogramm von Choclatey ( ) finden Sie unter:

https://chocolatey.org/

@JoshRivers eine Möglichkeit, dieses Skript zu stoppen, ohne den Computer neu starten zu müssen, wäre ebenfalls schön. DeeJayh vor 7 Jahren 0
@DeeJayh Ich denke, Sie können die Instanz von wscript.exe im Task-Manager finden und beenden. Normalerweise laufen nicht viele Instanzen dieser ausführbaren Datei. Sie könnten möglicherweise eine automatisierte Lösung für die Beendigung (http://stackoverflow.com/a/22325745) erstellen oder indem Sie Code in den Abschnitt Do While eingeben, der auf eine externe Tatsache achtet. Stellen Sie sicher, dass das Skript beim Start eine Datei erstellt, und überprüfen Sie dann, ob die Datei in While vorhanden ist. Auf diese Weise könnten Sie die Datei einfach löschen, um das Skript zu beenden. (Ich habe das Ding jedoch nie aufgegeben, daher führe ich das Skript einfach aus und töte es sehr selten mit dem Task-Manager). JoshRivers vor 7 Jahren 2
Unter Windows 10 können Sie den Startordner leicht finden, indem Sie das Start-> Ausführen-Fenster anzeigen (z. B. WindowsKey + R) und dann "shell: startup" eingeben. Weitere Informationen finden Sie auf dieser Website unter http://www.thewindowsclub.com/startup-folder-in-windows-8 buzz3791 vor 6 Jahren 1
Um das Skript zu finden, suchen Sie in Ihrem Task-Manager nach Microsoft Windows Based Script Host. Oder fügen Sie eine Spalte Prozessname hinzu und suchen Sie dann nach wscript.exe. JohnAndrews vor 5 Jahren 0
10
Ilya Kurnosov

Eine weitere Option ist das Freeware- Caffeine- Programm. Es ist auch für die kommerzielle Nutzung frei. Von der Homepage des Programms:

Wenn Sie Probleme mit dem Sperren Ihres PCs oder dem Einschlafen haben, wird Koffein es wach halten. Es wird simuliert, indem alle 59 Sekunden ein Tastendruck simuliert wird. Ihr Gerät denkt, dass Sie noch an der Tastatur arbeiten, sodass der Bildschirm nicht gesperrt wird und der Bildschirmschoner nicht aktiviert wird.

Koffein simuliert alle 59 Sekunden ein F15-Key-Up-Ereignis. Von allen verfügbaren Tastendrücken ist F15 wahrscheinlich die am wenigsten aufdringliche (ich habe noch nie eine PC-Tastatur mit dieser Taste gesehen!) Und am wenigsten Ihre Arbeit beeinträchtigen.

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

Durch Doppelklicken auf das Programmsymbol wird die Kaffeekanne geleert, was durch das Symbol dargestellt wird, und das Programm wird vorübergehend deaktiviert. Wenn Sie erneut darauf klicken, wird der Topf erneut gefüllt, und Ihre Maschine bleibt wach.

Ich warte auf den Tag, an dem ein Gov't-Mitarbeiter Koffein auf den Computer setzt und es passiert, dass Shift + F15 die Atomwaffen startet ... kazoni vor 8 Jahren 6
Schöne, einfache Lösung "von der Stange", danke. Scheint so viele Kommandozeilenoptionen wie gcc zu haben, aber ich brauche keine von ihnen! Sam Watkins vor 7 Jahren 0
7
Breakthrough

Sie können ein AutoIt- Skript erstellen, um entweder fortlaufend eine nicht verwendete Taste zu drücken (z. B. die Num-Sperre umschalten, Bildlaufsperre aktivieren), eine Minute lang schlafen zu lassen und zu wiederholen. Wenn Sie die Tastatur häufig verwenden, können Sie sie dazu bringen, die Maus um einen Pixel in eine beliebige Richtung zu bewegen.

Wenn Sie nicht möchten, dass es kontinuierlich ausgeführt wird, können Sie das Skript auch als geplante Aufgabe starten (sofern Sie über Zugriff verfügen), die gestartet wird, nachdem der Computer längere Zeit inaktiv war.

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

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 nach links oben, kehrt dann zurück und schläft dann für 9 Minuten ( 540000Millisekunden). Wenn ein Skript ausgeführt wird, sehen Sie das AutoIt-Symbol in der Taskleiste. Sie können es mit einem Rechtsklick auf dieses Symbol anhalten und die entsprechende Option auswä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, benennen Sie es, 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. Sie können es sogar .exe(aus dem Kontextmenü) kompilieren, um beispielsweise über den Windows-Scheduler zu starten.

Danke, ich werde es überprüfen, scheint einfacher als ein Mausradkäfig-Setup :) Gabriel R. vor 12 Jahren 0
Vorkompilierte Version dieses AutoIt-Skripts hier https://www.symantec.com/connect/downloads/readynosleepexe-prevents-screensaver-und-pc-locking JJS vor 7 Jahren 0
5
user205533

Compile this in Visual Studio or C# Express and run it from a command prompt (or double click it). Requires .NET 4.0 or above. It does everything you are looking for.

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; } } } 
Tut mir leid .... in dem obigen Beitrag alles nach dem Satz "Auf der Suche nach". ist Code und sollte kompiliert werden. Es wurde nicht richtig formatiert. Der Code zeigt einige ziemlich coole pInvoke für Interessierte. Übrigens ... nachdem ich das kompiliert habe, stelle ich es einfach irgendwo wie c: \ windows in meinen Pfad. Auf diese Weise kann ich, wenn ich an einer Eingabeaufforderung von cmd bin, ImWorkin eingeben, und ich kann loslegen :) user205533 vor 11 Jahren 0
Sie können Ihre Antwort ändern, indem Sie auf den Link ** Bearbeiten ** darunter klicken. Dennis vor 11 Jahren 1
Bitte bearbeiten Sie Ihre erste Antwort und löschen Sie diese. teylyn vor 11 Jahren 0
WTF ist mit "Nur einen Moment, ich berechne ein paar Werte!" Dummy-Schleife? KalEl vor 10 Jahren 6
Als Antwort auf den c # -Code hat er normalerweise den Autor gebürtig. Das ist zufällig ich. Ich habe das vor fast zwei Jahren auf Stack Overflow gepostet, glaube ich. vor 9 Jahren 6
5
Matt

Es gibt eine Android-App namens "Timeout Blocker", die in einem Intervall vibriert und Sie können Ihre Maus darauf legen. Es heißt, es nicht bei der Arbeit zu verwenden. https://play.google.com/store/apps/details?id=com.isomerprogramming.application.timeoutblocker&hl=de

1
user3540753

In meinem Fall hat nur diese eine Zeile den Trick:

SendKeys.Send(""); 

Timer_TickSetzen Sie es einfach in das Ereignis und stellen Sie das Zeitgeberintervall auf zB 60000ms.

ok, es ist schon spät, diese Antwort wieder aufzunehmen, aber denken Sie daran, nicht nur einen, sondern zwei CAPSLOCK zu senden, wenn Sie nicht möchten, dass ich in der Mitte eines STACKOVerflow-Kommentars schreie, ohne zu verstehen, warum (es dauerte ein paar Minuten, um diesen Kommentar zu schreiben). Gian Paolo vor 5 Jahren 0
@GianPaolo du hast recht. Das habe ich getan. Ich dachte, es sei klar, aber vielleicht sollte ich die Antwort ändern. user3540753 vor 5 Jahren 0
1
KERR

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

Das funktioniert einfach großartig :) sunil vor 6 Jahren 0
1
eli

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/ ) mit dem "f15" als Schlüssel zum Erfolg (dank Koffein. 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("") } 

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

UPDATE: Vielleicht gab es einige Wechsel vom Administrator, aber das ist für mich funktioniert nicht mehr Jetzt muss ich ein autohotkey-Skript von NBirnel verwenden: https://github.com/nbirnel/nosleep - diese Arbeit perfekt, weil es bewegt die Maus (ohne Arbeit abzulenken)

Ich führe den Code aus, erhalte jedoch den folgenden Fehler. Bitte geben Sie Folgendes an: c: \ Powershell> Powershell -nop myScriptName.ps1 myScriptName.ps1: Der Begriff "myScriptName.ps1" wird nicht als Name eines Cmdlets, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens oder überprüfen Sie, ob der Pfad korrekt ist, und versuchen Sie es erneut. In Zeile: 1 Zeichen: 1 + myScriptName.ps1 + ~~~~~~~~~~~~~~~~~ Kategorie-Info: ObjectNotFound: (myScriptName.ps1: String) [], CommandNotFoundException + FullyQualifiedErrorId: CommandNotFoundException c: \ Powershell> ` Sabrina vor 5 Jahren 0
@Sabrina Vielleicht müssen Sie den vollständigen Pfad zu Ihrem Skript definieren, also nicht nur "myScriptName.ps1", sondern "c: \ path \ to \ myScriptName.ps1". eli vor 5 Jahren 0
-1
Ian Boyd

Der richtige Weg, um damit umzugehen, ist:

  • Gehen Sie in die Registry, wo sich die Richtlinie befindet
  • Stellen Sie den Wert auf den gewünschten Wert ein
  • und ändern Sie die Registrierungsschlüsselberechtigungen
  • Verweigern Sie nur Personen den Schreibzugriff
Wenn die Administratoren die Einstellungen für die Bildschirmsperre deaktivieren, ist das Bearbeiten der Registrierung bereits deaktiviert. Gabriel R. vor 5 Jahren 0
@GabrielR. Als Administrator können Sie die ACL für die Registrierungsschlüssel ändern. Wenn ich die Geduld bekomme, werde ich den Vortrag von Mark Russinovish verlinken, in dem er erwähnt, dass er die Microsoft-Gruppenrichtlinie losgelassen hat, die seinen eigenen Laptop blockiert. Wenn Sie Administrator sind, haben Sie die volle Kontrolle über den Computer. Es muss wahrscheinlich mit dem Besitz der Registrierungsschlüssel beginnen. Anschließend müssen Sie sich die vollständige Kontrolle überlassen und dann allen anderen etwas anderes als Lesezugriff verweigern. Ian Boyd vor 5 Jahren 0