سؤال كيف يمكنني منع قفل الشاشة الذي تفرضه سياسة في Windows 7؟


تفرض شركتنا BOFH إعداد قفل الشاشة مع تأخير قصير للغاية. إنه محبط ويؤدي إلى نتائج عكسية.

هل هناك طريقة لمنع قفل الشاشة التلقائي؟ أفترض أنه لا توجد طريقة لتجاوز الإعداد الذي تفرضه السياسة ، ولكن ربما هناك برنامج يحاكي نشاط المستخدم.

فقط أسأل قبل أن أقوم بإعداد عجلة الفأر الدائمة (احصل عليه؟)


77
2017-08-30 08:32


الأصل


مجرد غريبة ما "قصيرة يبعث على السخرية" هو؟ - Carl
هناك هي مثل معالجات المفاتيح ومحركات الماوس التي تمنع الشاشة من الإغلاق. ولكن هل أنت متأكد من أنك تريد القيام بذلك؟ من المحتمل أكثر أن يكون التحايل على أمن تكنولوجيا المعلومات ضد سياسة الشركة ، ويمكن أن يكون جريمة مستهترة. - Keltari
15 دقيقة. حسنًا ، ليس هذا قصيرًا ... ما لم تكن في المنزل ، وليس في مكان مفتوح ، وكثيرًا ما تعمل على كمبيوتر آخر. مثل أنا ، لذلك قفل الشاشة هو البغيض. - Gabriel R.
واحد شبه الحل ليس لمنع شاشة التوقف ، ولكن لضبط فترة السماح لبضع ساعات. (هذا هو الوقت بين بدء شاشة التوقف والوقت الذي تحتاجه لإدخال كلمة مرور. عادة ما يتم ضبط هذا على 5 ثوان. لذا فإن هزة سريعة بالماوس عندما تقوم ركلات الشاشة بتعطيلها. ولكن مع قيمة أعلى يمكنك الحصول على ساعات بدون كلمة مرور. - Hennes
فترة السماح لا يعمل بالنسبة لي ، بينما النص هل. أفترض أن سياسة شركتي تعطل أيضًا فترة السماح. - Dane Jacob Hampton


الأجوبة:


يمكنني استخدام البرنامج النصي I title 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/


66
2017-11-05 18:54



JoshRivers طريقة لوقف هذا البرنامج النصي ، دون الحاجة إلى إعادة تشغيل جهاز الكمبيوتر ، سيكون من الرائع كذلك. - DeeJayh
DeeJayh أعتقد أنه يمكنك فقط العثور على مثيل wscript.exe في "إدارة المهام" وقم بقتله. عادة لا يكون هناك الكثير من الأمثلة على تشغيل الملف التنفيذي. ربما يمكنك تقديم حل تلقائي لإنهاء الخدمة (stackoverflow.com/a/22325745) أو بوضع الكود في قسم Do While الذي يراقب حقيقة خارجية. مثل أن يكون البرنامج النصي يقوم بإنشاء ملف عند بدء التشغيل ، ثم تحقق من وجود الملف في While. بهذه الطريقة يمكنك فقط حذف الملف لجعل البرنامج النصي ينتهي. (أنا لم أترك هذا الشيء ، على الرغم من ذلك ، فأنا أقوم بتشغيل البرنامج النصي ونادراً ما أقتله مع مدير المهام). - JoshRivers
في Windows 10 ، يتم عرض طريقة سهلة لتحديد موقع مجلد بدء التشغيل في Start-> Run window (على سبيل المثال ، WindowsKey + R) ثم اكتب shell:startup. انظر هذا الموقع لمزيد من المعلومات thewindowsclub.com/startup-folder-in-windows-8 - buzz3791
للعثور على مظهر البرنامج النصي لـ Microsoft Windows Based Script Host في إدارة المهام الخاصة بك. أو إضافة عمود اسم العملية ثم ابحث عن wscript.exe. - JohnAndrews


إذا كان Windows Media Player لا يزال مثبتًا ، فيمكنك تشغيل فيديو في حلقة وتقليصه (تعمل مقاطع الفيديو "Wildlife" النموذجية بشكل جيد لذلك). بشكل افتراضي ، طالما يتم تشغيل الفيديو ، فلن يتم قفل الشاشة.


74
2018-04-10 17:22



شكرا لكم! هذا هو أبسط الحلول وأكثرها فعالية. (لم أحاول على الرغم من ذلك ، تركت الشركة منذ فترة وحاولت الابتعاد عن Windows.) - Gabriel R.
أؤكد أن هذا يعمل على نظام التشغيل Windows XP باستخدام ملف MP3 بدلاً من الفيديو. - Alaa Ali
الإختراق اللامع!
يعمل هذا أيضًا باستخدام VLC لأولئك الذين يفضلونه على Windows Media Player - ecoe
اختراق كبير لقد بنيت مخطوطات فيديو صغيرة وجزئية فارغة لبدء هذا. الملفات في box.net وموقع بلوق في موقعي الشخصي - Eric Cloninger


خيار آخر هو مجاني كافيين برنامج. وهو مجاني للاستخدام التجاري كذلك. من الصفحة الرئيسية للبرنامج:

إذا كنت تواجه مشاكل في قفل جهاز الكمبيوتر أو النوم ، فإن الكافيين سيبقيه مستيقظًا. وهو يعمل عن طريق محاكاة الضغط على المفتاح مرة واحدة كل 59 ثانية ، لذلك يعتقد جهازك أنك ما زلت تعمل على لوحة المفاتيح ، لذلك لن قفل الشاشة أو تنشيط شاشة التوقف.

الكافيين يعمل عن طريق محاكاة حدث F15 حتى كل 59 ثانية. من بين جميع المطابع الرئيسية المتاحة ، قد يكون F15 هو الأقل تطفلاً (لم أر لوحة مفاتيح كمبيوتر مع هذا المفتاح!) ، وأقل عرضة للتداخل مع عملك.

يتيح لك هذا الحل الجاهز أيضًا التحكم في وقت تمكينه وتعطيله:

يؤدي النقر المزدوج فوق رمز البرنامج إلى إفراغ وعاء القهوة ، وهو ما يمثله الرمز وتعطيل البرنامج مؤقتًا. يؤدي النقر المزدوج فوقه مرة أخرى إلى إعادة ملء القدر ، وسيبقي جهازك مستيقظًا.


10
2018-06-24 17:31



أنا في انتظار اليوم الذي يضع فيه موظف في Gov't مادة الكافيين على جهاز الكمبيوتر الخاص بهم ، ويحدث أن شيئًا مثل Shift + F15 يطلق الأسلحة النووية ... - kazoni
حل سهل "على الرف" ، وذلك بفضل. يبدو أن لديك الكثير من خيارات سطر الأوامر مثل gcc ، لكنني لست بحاجة إلى استخدام أي منها! - Sam Watkins


يمكنك إنشاء أوتويت البرنامج النصي إما أن تضغط باستمرار على مفتاح غير مستخدم (على سبيل المثال ، اجعله يتحول إلى مفتاح num lock وقفل التمرير) ، وينام لمدة دقيقة أو نحو ذلك ، ويكرر. بدلاً من ذلك ، إذا كنت تستخدم لوحة المفاتيح كثيرًا ، فيمكنك تحريك الماوس ببكسل أو بأي اتجاه.

إذا كنت لا تريد تشغيله باستمرار ، يمكنك أيضًا تشغيل البرنامج النصي كمهمة مجدولة (إذا كان لديك وصول) لبدء التشغيل بعد أن كان الكمبيوتر غير نشط لبعض الوقت.

وهذا برنامج نصي بسيط جدًا لإجراء تحرّك غير مرئي للماوس ، إذا كنت لا ترغب في الوصول إلى بنية 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 جدولة.


7
2017-08-30 14:59



شكرا ، أنا سوف تحقق من ذلك ، يبدو أبسط من إعداد قفص العجلة الماوس :) - Gabriel R.
نسخة precompiled من هذا البرنامج النصي هنا AutoIt symantec.com/connect/downloads/... - JJS


ترجمة هذا في 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;


        }
    }
}

5
2018-03-09 03:28



عذرا .... في ما بعد كل شيء بعد عبارة "تبحث عن". هو رمز وينبغي تجميعها. لم يتم تنسيقها بشكل صحيح. يوضح رمز بعض pInvoke جميلة جدا لأولئك المهتمين. راجع للشغل .... بعد تجميع ، أنا فقط وضعت في طريقي في مكان ما مثل ج: \ النوافذ. بهذه الطريقة إذا كنت في موجه كمد يمكنني كتابة ImWorkin وأنا على ما يرام :) - user205533
يمكنك تعديل إجابتك بالنقر فوق تصحيح الرابط أدناه. - Dennis
الرجاء تحرير إجابتك الأولى ثم حذفها. - teylyn
WTF متروك مع "لحظة واحدة ، أنا حساب بعض القيم!" حلقة وهمية؟ - KalEl
ردا على رمز ج # نشر عادة المعتاد لإعطاء الائتمان للمؤلف. هذا يحدث لي. أنا نشرت هذا منذ ما يقرب من عامين قبل يوم على كومة تجاوز السعة أعتقد.


هناك تطبيق Android يُسمى "مُغلِق المهلة" الذي يهتز في فترة زمنية ، ويمكنك وضع الماوس عليه. تقول لا لاستخدامها في العمل بالرغم من ذلك. https://play.google.com/store/apps/details؟id=com.isomerprogramming.application.timeoutblocker&hl=en


5
2018-06-06 21:36





في حالتي ، كان هذا الخط الوحيد هو الخدعة:

SendKeys.Send("{CAPSLOCK}");

فقط ضعها في Timer_Tick الحدث وتعيين الفاصل الزمني لجهاز ضبط الوقت على سبيل المثال. 60000ms.


1
2017-12-30 08:17



حسناً ، لقد فات الأوان لاستئناف هذه الإجابة ولكنك لا تفكر في إرسال واحد ولكن اثنين من CAPSLOCK إذا كنت لا تريد مني أن أصفق في وسط تعليق A STACKOVererow دون فهم السبب (استغرق بضع دقائق لكتابة هذا التعليق) - Gian Paolo
GianPaolo أنت على حق. وهذا هو ما فعلته. اعتقدت أنه من الواضح ولكن ربما ينبغي لي تعديل الإجابة. - user3540753


قد يكون Mouse Jiggler خيارًا: https://mousejiggler.codeplex.com/


1
2018-05-23 06:00



هذا يعمل فقط :) عظيم - sunil