استخدم التبديل السريع بين مستخدمي Windows 7. التبديل السريع جدًا بين مستخدمي Windows. كيفية إضافة "حساب" جديد

أسفر البحث في جوجل عن:

  • لتبديل الجلسات، استخدم وظائف wtsapi32.dll: WTSEnumerateSessions ، WTSConnectSession ، WTSDisconnectSession (الآن، عندما ألقي نظرة على وصف هذه الوظائف، يُقال إنها تعمل مع جلسات العمل عن بُعد، ولكي أكون صادقًا، فأنا في حيرة من أمري بعض الشيء ، لكنه يعمل معي محليًا، بلا عيب).
  • بالنسبة لمفاتيح التشغيل السريع، استخدم وظائف user32.dll: RegisterHotKey، وUnregisterHotKey. كل شيء بسيط هنا.

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

لذلك، في البداية، تم كتابة تطبيق Win32 بسيط بزر واحد، عند النقر عليه، تم تنفيذ شيء مثل الكود التالي:

SwitchUser () باطلة خاصة (IntPtr buffer = IntPtr.Zero; int count = 0; // احصل على قائمة الجلسات التي تم تسجيل الدخول فيها if (WTSEnumerateSessions(WTS_CURRENT_SERVER_HANDLE, 0, 1, ref buffer, ref count)) (WTS_SESSION_INFO sessionInfo = new WTS_SESSION_INFO ; // الجزء الأصعب: // تحويل الذاكرة غير المُدارة بعناية إلى ذاكرة مُدارة for (int Index = 0; Index< count; index++) sessionInfo = (WTS_SESSION_INFO)Marshal.PtrToStructure((IntPtr)((int)buffer + (Marshal.SizeOf(new WTS_SESSION_INFO()) * index)), typeof(WTS_SESSION_INFO)); int activeSessId = -1; int targetSessId = -1; // получаем Id активного, и неактивного сеанса // 0 пропускаем, там всегда "Services" for (int i = 1; i < count; i++) { if (sessionInfo[i].State == WTS_CONNECTSTATE_CLASS.WTSDisconnected) targetSessId = sessionInfo[i].SessionId; else if (sessionInfo[i].State == WTS_CONNECTSTATE_CLASS.WTSActive) activeSessId = sessionInfo[i].SessionId; } if ((activeSessId >0) && (targetSessId > 0)) ( // إذا كانت هناك جلسة غير نشطة، فانتقل إليها. WTSConnectSession(Convert.ToUInt64(targetSessId), Convert.ToUInt64(activeSessId), ""، false); ) else ( / / إذا لم يكن هناك غير نشط، فما عليك سوى قطع الاتصال (انتقل إلى شاشة اختيار المستخدم) WTSDisconnectSession(WTS_CURRENT_SERVER_HANDLE, activeSessId, false);) ) // تأكد من مسح الذاكرة WTSFreeMemory(buffer); )

مع جلستين، ستحتوي sessionInfo على 3 عناصر: جلسة الخدمات، وجلسة المستخدم الأولى، وجلسة المستخدم الثانية. وبناء على ذلك، سيتم تحديد targetSessId وactiveSessId بشكل فريد. لأكثر من جلستين، سيتم التبديل بين النشط وآخر غير نشط.

ولكن هنا كان لدي سوء حظ طفيف. ربما خمن البعض بالفعل أن الأمور لن تسير بهذه الطريقة. عند تنفيذ WTSConnectSession من التطبيق، يتم قطع اتصال المستخدم النشط، ولكن يتم تمكين المستخدم الثاني - وليس. أولئك. ببساطة، لا يمكن لتطبيق مستخدم واحد بدء تسجيل دخول مستخدم آخر. ولكن الخدمة يمكن أن تفعل ذلك! نعم، إنه عار، ولكن بدون خدمة النظام لن نتمكن من فعل أي شيء. حسنًا، فلنقم بإنشاء خدمة نظام سنضيف إليها هذا الرمز. هذا هو المكان الذي تكون فيه لغة C# و.Net مفيدة، نظرًا لأن كتابة خدمة باستخدام هذه التقنيات أمر بسيط للغاية. الآن تظهر المشكلة التالية: الخدمة ليس لديها واجهة مستخدم، أي. لا يمكن للمستخدم التأثير بشكل مباشر على تشغيل الخدمة، ولا يمكن للخدمة سماع تصرفات المستخدم. لا يمكنك إرفاق مفتاح التشغيل السريع بالخدمة.

إذن هذا هو الحل لدينا:
يستمع تطبيق المستخدم إلى المستخدم، وعندما يتم اكتشاف مفتاح التشغيل السريع، فإنه يرسل إشارة إلى خدمة النظام، التي تقوم بإجراء التبديل.

لم يتبق سوى القليل جدًا، ولكن حتى هنا سأجد شيئًا لأريكم إياه. على سبيل المثال، نحتاج إلى تطبيق سطح مكتب، بدون نوافذ، ولكن بحيث يقبل مفاتيح الاختصار. يمكن القيام بذلك كما يفعل أي شخص آخر: إخفاء نافذة التطبيق الرئيسية وعدم إظهارها. ولكن هناك حل أفضل. اكتب سياق التطبيق الخاص بك. مع الأسود
على سبيل المثال هذا:

فئة داخلية SUApplicationContext: ApplicationContext (مفتاح Hotkey خاص hk؛ نموذج نموذج خاص؛ const خاص int SWITCH_USER_COMMAND = 193؛ داخلي SUApplicationContext() ( // فقط قم بإنشاء النموذج، ولا تزال هناك حاجة إليه // للاستماع إلى مفاتيح التشغيل السريع form = new Form(); // إنشاء مفتاح تشغيل سريع عالمي Win+A hk = new Hotkey(Keys.A, false, false, false, true); // تفويض معالج الحدث hk.Pressed += Delegation ( SendSwitchCommand(); ); // تسجيل مفتاح التشغيل السريع إذا استطعنا if (hk.GetCanRegister(form)) hk.Register(form); // إرفاق حدث بالمخرج Application.ApplicationExit += Application_ApplicationExit;) public void SendSwitchCommand() (// وصف خدمتنا ServiceController sc = new ServiceController("Sus")؛ حاول (/ أرسل إليه أمرًا sc.ExecuteCommand(SWITCH_USER_COMMAND);) التقط (استثناء ex) (MessageBox.Show(ex.Message); ) ) void Application_ApplicationExit(object sender, EventArgs e) ( // إلغاء تسجيل مفتاح التشغيل السريع عند الخروج if (hk.Registered) hk.Unregister(); ) ) الفراغ الثابت الرئيسي () ( Application.EnableVisualStyles ()؛ Application.SetCompatibleTextRenderingDefault (false)؛ Application.Run (new SUApplicationContext ()؛)

أستخدم هنا واجهة MovablePython.Hotkey الموجودة على الإنترنت عبر وظائف user32.dll RegisterHotKey وUnregisterHotKey.

واثنين من الخطوط حول الخدمة نفسها.

التجاوز المحمي باطل OnCustomCommand(أمر int) ( base.OnCustomCommand(command); if (command == SWITCH_USER_COMMAND) ( SwitchUser(); ) )

نحن نتجاوز حدث OnCustomCommand، وعندما نتلقى أمرنا، نقوم بتنفيذ الوظيفة المعروفة لنا بالفعل.

كل ما تبقى هو التسجيل وبدء الخدمة، وتشغيل التطبيق لكل مستخدم.

الجميع. الآن، بعد أن يقوم المستخدم الأول بتسجيل الدخول بعد بدء تشغيل الكمبيوتر والضغط على Win+A، يتم قطع جلسته وتظهر نافذة اختيار المستخدم. يدخل المستخدم الثاني ويضغط على Win+A - تظهر جلسة المستخدم الأول. إلخ.

يمكنك التحقق من المصادر على جيثب. أو يمكنك تنزيل المشروع بأكمله والملفات القابلة للتنفيذ المجمعة والجاهزة للاستخدام.

أسفر البحث في جوجل عن:

  • لتبديل الجلسات، استخدم وظائف wtsapi32.dll: WTSEnumerateSessions ، WTSConnectSession ، WTSDisconnectSession (الآن، عندما ألقي نظرة على وصف هذه الوظائف، يُقال إنها تعمل مع جلسات العمل عن بُعد، ولكي أكون صادقًا، فأنا في حيرة من أمري بعض الشيء ، لكنه يعمل معي محليًا، بلا عيب).
  • بالنسبة لمفاتيح التشغيل السريع، استخدم وظائف user32.dll: RegisterHotKey، وUnregisterHotKey. كل شيء بسيط هنا.
سأقوم بالحجز على الفور، ويمكنك رمي الطماطم في وجهي، لكنني كتبت هذا الشيء بلغة C#، على الرغم من أنه على الجانب الإيجابي، سيكون بالطبع أفضل، وأكثر أصالة، وما إلى ذلك، وما إلى ذلك. ولكن بعد ذلك كنت قد بدأت للتو في تعلم C# وكنت بحاجة إلى الخبرة، وعندما تمت كتابة الحل لم تكن هناك حاجة لإعادة كتابته، على الرغم من أن نقله لن يستغرق أكثر من أمسية واحدة.

لذلك، في البداية، تم كتابة تطبيق Win32 بسيط بزر واحد، عند النقر عليه، تم تنفيذ شيء مثل الكود التالي:
SwitchUser () باطل خاص (IntPtr buffer = IntPtr.Zero; int count = 0; // احصل على قائمة الجلسات التي تم تسجيل الدخول فيها if (WTSEnumerateSessions(WTS_CURRENT_SERVER_HANDLE, 0, 1, ref buffer, ref count)) (WTS_SESSION_INFO sessionInfo = new WTS_SESSION_INFO ; // الجزء الأصعب: // تحويل الذاكرة غير المُدارة بعناية إلى ذاكرة مُدارة for (int Index = 0; Index< count; index++) sessionInfo = (WTS_SESSION_INFO)Marshal.PtrToStructure((IntPtr)((int)buffer + (Marshal.SizeOf(new WTS_SESSION_INFO()) * index)), typeof(WTS_SESSION_INFO)); int activeSessId = -1; int targetSessId = -1; // получаем Id активного, и неактивного сеанса // 0 пропускаем, там всегда "Services" for (int i = 1; i < count; i++) { if (sessionInfo[i].State == WTS_CONNECTSTATE_CLASS.WTSDisconnected) targetSessId = sessionInfo[i].SessionId; else if (sessionInfo[i].State == WTS_CONNECTSTATE_CLASS.WTSActive) activeSessId = sessionInfo[i].SessionId; } if ((activeSessId >0) && (targetSessId > 0)) ( // إذا كانت هناك جلسة غير نشطة، فانتقل إليها. WTSConnectSession(Convert.ToUInt64(targetSessId), Convert.ToUInt64(activeSessId), ""، false); ) else ( / / إذا لم يكن هناك غير نشط، فما عليك سوى قطع الاتصال (انتقل إلى شاشة اختيار المستخدم) WTSDisconnectSession(WTS_CURRENT_SERVER_HANDLE, activeSessId, false);) ) // تأكد من مسح الذاكرة WTSFreeMemory(buffer); )
مع جلستين، ستحتوي sessionInfo على 3 عناصر: جلسة الخدمات، وجلسة المستخدم الأولى، وجلسة المستخدم الثانية. وبناء على ذلك، سيتم تحديد targetSessId وactiveSessId بشكل فريد. لأكثر من جلستين، سيتم التبديل بين النشط وآخر غير نشط.

ولكن هنا كان لدي سوء حظ طفيف. ربما خمن البعض بالفعل أن الأمور لن تسير بهذه الطريقة. عند تنفيذ WTSConnectSession من التطبيق، يتم قطع اتصال المستخدم النشط، ولكن يتم تمكين المستخدم الثاني - وليس. أولئك. ببساطة، لا يمكن لتطبيق مستخدم واحد بدء تسجيل دخول مستخدم آخر. ولكن الخدمة يمكن أن تفعل ذلك! نعم، إنه عار، ولكن بدون خدمة النظام لن نتمكن من فعل أي شيء. حسنًا، فلنقم بإنشاء خدمة نظام سنضيف إليها هذا الرمز. هذا هو المكان الذي تكون فيه لغة C# و.Net مفيدة، نظرًا لأن كتابة خدمة باستخدام هذه التقنيات أمر بسيط للغاية. الآن تظهر المشكلة التالية: الخدمة ليس لديها واجهة مستخدم، أي. لا يمكن للمستخدم التأثير بشكل مباشر على تشغيل الخدمة، ولا يمكن للخدمة سماع تصرفات المستخدم. لا يمكنك إرفاق مفتاح التشغيل السريع بالخدمة.

إذن هذا هو الحل لدينا:
يستمع تطبيق المستخدم إلى المستخدم، وعندما يتم اكتشاف مفتاح التشغيل السريع، فإنه يرسل إشارة إلى خدمة النظام، التي تقوم بإجراء التبديل.

لم يتبق سوى القليل جدًا، ولكن حتى هنا سأجد شيئًا لأريكم إياه. على سبيل المثال، نحتاج إلى تطبيق سطح مكتب، بدون نوافذ، ولكن بحيث يقبل مفاتيح الاختصار. يمكن القيام بذلك كما يفعل أي شخص آخر: إخفاء نافذة التطبيق الرئيسية وعدم إظهارها. ولكن هناك حل أفضل. اكتب سياق التطبيق الخاص بك. مع الأسود
على سبيل المثال هذا:
فئة داخلية SUApplicationContext: ApplicationContext (مفتاح Hotkey خاص hk؛ نموذج نموذج خاص؛ const خاص int SWITCH_USER_COMMAND = 193؛ داخلي SUApplicationContext() ( // فقط قم بإنشاء النموذج، ولا تزال هناك حاجة إليه // للاستماع إلى مفاتيح التشغيل السريع form = new Form(); // إنشاء مفتاح تشغيل سريع عالمي Win+A hk = new Hotkey(Keys.A, false, false, false, true); // تفويض معالج الحدث hk.Pressed += Delegation ( SendSwitchCommand(); ); // تسجيل مفتاح التشغيل السريع إذا استطعنا if (hk.GetCanRegister(form)) hk.Register(form); // إرفاق حدث بالمخرج Application.ApplicationExit += Application_ApplicationExit;) public void SendSwitchCommand() (// وصف خدمتنا ServiceController sc = new ServiceController("Sus")؛ حاول (/ أرسل إليه أمرًا sc.ExecuteCommand(SWITCH_USER_COMMAND);) التقط (استثناء ex) (MessageBox.Show(ex.Message); ) ) void Application_ApplicationExit(object sender, EventArgs e) ( // إلغاء تسجيل مفتاح التشغيل السريع عند الخروج if (hk.Registered) hk.Unregister(); ) ) الفراغ الثابت الرئيسي () ( Application.EnableVisualStyles ()؛ Application.SetCompatibleTextRenderingDefault (false)؛ Application.Run (new SUApplicationContext ()؛)
أستخدم هنا واجهة MovablePython.Hotkey الموجودة على الإنترنت عبر وظائف user32.dll RegisterHotKey وUnregisterHotKey.

واثنين من الخطوط حول الخدمة نفسها.
تجاوز محمي باطلة OnCustomCommand(أمر int) ( base.OnCustomCommand(command); if (command == SWITCH_USER_COMMAND) ( SwitchUser(); ) )
نحن نتجاوز حدث OnCustomCommand، وعندما نتلقى أمرنا، نقوم بتنفيذ الوظيفة المعروفة لنا بالفعل.

كل ما تبقى هو التسجيل وبدء الخدمة، وتشغيل التطبيق لكل مستخدم.

الجميع. الآن، بعد أن يقوم المستخدم الأول بتسجيل الدخول بعد بدء تشغيل الكمبيوتر والضغط على Win+A، يتم قطع جلسته وتظهر نافذة اختيار المستخدم. يدخل المستخدم الثاني ويضغط على Win+A - تظهر جلسة المستخدم الأول. إلخ.

يمكنك التحقق من المصادر على جيثب. أو يمكنك تنزيل المشروع بأكمله والملفات القابلة للتنفيذ المجمعة والجاهزة للاستخدام.

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

يتم إنشاء حساب بحقوق "المسؤول" أو "الضيف" لأي مستخدم. في الحالة الأولى، سيكون لدى الشخص المزيد من الفرص. سيكون قادرًا على فتح بعض البرامج التي لن يتمكن "المستخدمون" الآخرون من الوصول إليها وإضافة الحسابات وحذفها.

عند تثبيت "Seven" على الكمبيوتر، وهو مخصص لعمل العديد من الموظفين، فأنت بحاجة إلى معرفة كيفية تغيير المستخدم في نظام التشغيل Windows 7. بعد قراءة هذه المقالة، ستتعلم أيضًا كيفية تغيير كلمة المرور واسم الحساب الخاص بك باستخدام الطريقة المناسبة لك. ونتيجة لذلك، لن يتمكن أحد من الوصول إلى معلوماتك إلا أنت أو الأشخاص الذين تخبرهم بكلمة المرور الخاصة بك.

كيفية إضافة "حساب" جديد؟

لإنشاء حساب لمستخدم جديد، ستحتاج إلى الانتقال إلى قائمة "ابدأ" والنقر على الأيقونة الموجودة أعلى النافذة. من خلال النقر على الرابط "إدارة حساب آخر"، حدد المربع الذي يسمح لك بإنشاء "حساب".

سيتم فتح صفحة سترى فيها مربعًا ستحتاج فيه إلى إدخال اسم المستخدم والإشارة إلى نوع الوصول (مسؤول أو عادي). الآن انقر على "إنشاء حساب".

إذا كنت لا تريد أن يتمكن الأشخاص الآخرون الذين يعملون على جهاز الكمبيوتر الخاص بك من إلغاء تثبيت البرامج أو تغيير الملفات المهمة، فاضبطه على "الوصول العام". إذا كنت تثق بالشخص تماما، فيمكنك منحه حقوق "المسؤول".

في بضع دقائق فقط، يمكنك إضافة مستخدم جديد إلى جهاز الكمبيوتر الخاص بك.

كيفية التبديل بين الحسابات في ويندوز 7؟

لذلك، إذا كان كل مستخدم للكمبيوتر الشخصي لديه "حساب" خاص به على جهاز الكمبيوتر الخاص بك، فأنت بحاجة إلى معرفة كيفية التبديل بينهما. عند بدء تشغيل الكمبيوتر، يصبح من الممكن تحديد "مستخدم" أو آخر من خلال النقر على الأيقونة المقابلة. ولكن ماذا لو تم تحميل نظام التشغيل بالفعل؟ كيفية تغيير المستخدم في ويندوز 7؟

للتبديل من حساب إلى آخر، يمكنك استخدام إحدى الطرق التالية:

  • اضغط على الأزرار "Ctrl" و"alt" و"Delete" في نفس الوقت. سيتم فتح "شاشة البدء"، حيث تحتاج إلى النقر فوق "تغيير المستخدم"؛
  • استخدم الأزرار الساخنة - Win+L. يظهر شعار نظام التشغيل "Windows" على مفتاح "Win"؛
  • توجه إلى البداية. بجوار خيار "إيقاف التشغيل"، انقر على المثلث لإظهار خيار "تغيير المستخدم".

لذلك، بكل بساطة، يمكنك التبديل بين "حسابات" المستخدم.

كيفية تغيير ويندوز 7؟

يمكن لكل مستخدم للكمبيوتر الشخصي إعطاء حسابه أي اسم أو تغيير اسم موجود.

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

  • يتصل " سطر الأوامر" وأدخل "lusrmgr.msc" هناك (بدون علامتي الاقتباس). ستظهر نافذة حيث تحتاج إلى تحديد القسم الفرعي "المستخدمون". على اليمين، انقر على "المستخدم" الذي تريد إعادة تسميته. في قائمة السياق، انقر على الخيار المناسب، ثم على زر "أدخل". الآن انقر بزر الماوس الأيمن مرة أخرى على المستخدم الذي تمت إعادة تسميته بالفعل وانتقل إلى "الخصائص". أنت بحاجة إلى علامة التبويب عام. أدخل اسمك الجديد هنا مرة أخرى.
  • انتقل إلى قائمة "ابدأ" وانقر على الأيقونة المربعة الموجودة أعلى النافذة. اتبع الرابط "تغيير اسم حسابك". أدخل الخيار الخاص بك وانقر فوق "إعادة تسمية".

كيفية تغيير كلمة مرور المستخدم؟

أنت تعرف بالفعل كيفية تغيير المستخدم في نظام التشغيل Windows 7، ولكن ماذا تفعل إذا كنت بحاجة إلى تغيير كلمة المرور؟ يمكن القيام بذلك عن طريق الضغط على الأزرار "Ctrl" و"Delete" و"Alt". الآن حدد "تغيير كلمة المرور..." وأدخل كلمة المرور الحالية، ثم كلمة المرور الجديدة مرتين. الخطوة الأخيرة هي تأكيد أفعالك.

وبدلاً من ذلك، يمكنك الذهاب إلى ابدأ والنقر على أيقونة المستخدم. في النافذة التي تفتح، اتبع الرابط "تغيير كلمة المرور الخاصة بك". أدخل كلمات المرور الحالية والجديدة مرتين في الحقول المناسبة.

يمكنك الآن تغيير كلمة مرور مستخدم Windows 7، وبالتالي حماية نفسك من سرقة المعلومات القيمة الموجودة في حسابك.

خاتمة

لقد تعلمت كيفية إنشاء حسابات المستخدمين وتغيير أسمائهم وكلمات المرور الخاصة بهم. إذا كان جهاز كمبيوتر واحد مخصصًا لعدة أشخاص، فمن المنطقي إنشاء "حساب" منفصل لكل منهم. في هذه الحالة، أنت وحدك من يمكنه الحصول على حقوق "المسؤول".

سيتمكن المستخدم من تخصيص مظهر نظام التشغيل بالشكل الذي يناسبه. على سبيل المثال، يريد بعض الأشخاص أن يكون "شريط المهام" موجودًا في الجزء العلوي من الشاشة أو على الجانب. بعض "المستخدمين" لا يحبون تغيير المعيار خلفية ويندوز، يريد الآخرون رؤية شيء مشرق أو مضحك على سطح المكتب. من الممكن تكوين أي "حساب" وفقًا لتفضيلاتك، ومعرفة كيفية تغيير المستخدم في نظام التشغيل Windows 7، سيكون الجميع سعداء، لأنه إذا لزم الأمر، سيكون بإمكانهم التبديل إلى "حسابهم" الخاص.