Windows 7에서 정책 적용 화면 잠금을 방지하려면 어떻게해야합니까? 적용합니다. 실망스럽고 비생산적입니다. 자동

우리 회사 BOFH는 엄청나게 짧은 지연으로 화면 잠금 설정을 적용합니다. 실망스럽고 비생산적입니다.

자동 화면 잠금을 방지하는 방법이 있습니까? 정책 적용 설정을 무시하는 방법은 없지만 사용자 활동을 모방하는 소프트웨어가있을 수 있습니다.

영구 마우스 휠을 설정하기 전에 묻습니다. (알 겠어요?)



답변

나는 idle.vbs라는 제목의 스크립트를 사용합니다.

Dim objResult

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

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

6 초마다 키보드에서 numlock을 빠르게 토글하여 Windows가 누군가가 키보드와 상호 작용하여 화면 잠금을 방지한다고 믿습니다. 이것은 바닐라 창에서 실행되며이를 사용하기 위해 개발 또는 스크립팅 도구가 필요하지 않습니다. 확장자가 .vbs 인 텍스트 파일을 만든 다음 두 번 클릭하거나 시작 항목에 배치하십시오.

편집 :이 스크립트를 시작 항목에 넣을 수 있습니다.

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

Choclatey ( choco) CLI 설치 프로그램 에 대한 자세한 내용은 다음을 참조하십시오.

https://chocolatey.org/


답변

Windows Media Player가 여전히 설치되어 있으면 비디오를 루프에서 재생하고 최소화 할 수 있습니다 (샘플 “Wildlife”비디오가 제대로 작동 함). 기본적으로 비디오가 재생되는 동안 화면은 잠기지 않습니다.


답변

또 다른 옵션은 프리웨어 카페인 프로그램입니다. 상업용으로도 무료입니다. 프로그램 홈페이지에서 :

PC 잠금 또는 잠자기에 문제가있는 경우 카페인은 계속 깨어 있습니다. 59 초마다 한 번씩 키 누름을 시뮬레이션하여 작동하므로 컴퓨터는 여전히 키보드에서 작업하고 있다고 생각하므로 화면을 잠 그거나 화면 보호기를 활성화하지 않습니다.

카페인은 59 초마다 F15 키업 이벤트를 시뮬레이션하여 작동합니다. 사용 가능한 모든 키 누름 중 F15는 아마도 가장 방해가되지 않으며 (그 키로 PC 키보드를 본 적이 없습니다!) 작업에 방해가되지 않습니다.

이 기성품 솔루션을 사용하면 언제 활성화하고 비활성화할지 제어 할 수 있습니다.

프로그램 아이콘을 두 번 클릭하면 아이콘이 나타내는 커피 포트가 비워지고 프로그램이 일시적으로 비활성화됩니다. 다시 더블 클릭하면 포트가 채워지고 기계가 깨어납니다.


답변

AutoIt 스크립트를 생성하여 사용하지 않는 키를 계속 누르고 (예 : num lock 전환, 스크롤 잠금) 1 분간 잠자기 및 반복 할 수 있습니다. 또는 키보드를 많이 사용하는 경우 마우스를 아무 방향으로나 픽셀만큼 움직일 수 있습니다.

계속 실행하지 않으려면 일정 시간 동안 컴퓨터를 사용하지 않으면 스크립트를 예약 된 작업 (액세스 권한이있는 경우)으로 시작하면됩니다.

AutoIt 구문을 사용하지 않으려는 경우 보이지 않는 마우스 이동을 수행하는 매우 간단한 스크립트입니다.

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

이 스크립트는 마우스 커서를 왼쪽 위 방향으로 한 픽셀 씩 이동 한 후 다시 반환 한 다음 9 분 ( 540000밀리 초) 동안 휴면 상태입니다 . 스크립트가 실행 중이면 트레이에 AutoIt 아이콘이 표시됩니다. 이 아이콘을 마우스 오른쪽 버튼으로 클릭하고 해당 옵션을 선택하여 중지 할 수 있습니다.

스크립트를 만들려면 AutoIt을 설치하고 임의의 폴더를 마우스 오른쪽 단추로 클릭 한 다음 New>를 선택 AutoIt v3 Script하고 이름을 지정한 다음이 새 스크립트를 마우스 오른쪽 단추로 클릭하고을 선택 Edit하고 위에 제공된 코드를 붙여넣고 저장하십시오. .exe상황에 맞는 메뉴에서 다시 컴파일 하여 예를 들어 Windows 스케줄러에서 시작할 수도 있습니다.


답변

Visual Studio 또는 C # Express에서이를 컴파일하고 명령 프롬프트에서 실행하십시오 (또는 두 번 클릭하십시오). .NET 4.0 이상이 필요합니다. 당신이 찾고있는 모든 것을 수행합니다.

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;


        }
    }
}

답변

“Timeout Blocker”라는 안드로이드 앱이 간격을두고 진동하며 마우스를 올려 놓을 수 있습니다. 그것은 직장에서 사용하지 말라고합니다. https://play.google.com/store/apps/details?id=com.isomerprogramming.application.timeoutblocker&hl=ko


답변

내가 사용하려면 간단 하고 통합 된 옵션 ( 추가 소프트웨어 PowerShell 스크립트 등) (감사 https://dmitrysotnikov.wordpress.com/2009/06/29/prevent-desktop-lock-or-screensaver-with-powershell/ )는 성공의 열쇠로 “f15″를 사용합니다 (카페인에 대한 thx. 실제로 방해가 가장 적습니다)

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

이것을 myScriptName.ps1에 넣고 바탕 화면 바로 가기 또는 명령 줄을 통해 시작하십시오.
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -nop "C:\Users\myUser\Desktop\myScriptName.ps1"

업데이트 :
어쩌면 관리자의 변경이 있었지만 더 이상 작동하지 않습니다. 이제 NBirnel에서 autohotkey-script를 사용해야합니다 : https://github.com/nbirnel/nosleep- 이 작업은 완벽 하기 때문에 완벽 합니다. 작업을 방해하지 않고 마우스를 움직입니다.