سؤال

أحاول إنشاء أداة مشابهة لـ Microsoft المهجورة Super Fast User Switcher (تحميل) ، والذي يسمح للتبديل السريع للمستخدم دون المرور عبر شاشة الترحيب.

لديّ تطبيق عمل باستخدام غير موثق WinStationConnectW API (جنبا إلى جنب مع WTSEnumerateSessions) ، ولكن يمكن أن يتحول فقط إلى مستخدم تم تسجيل الدخول بالفعل.

كيف يمكنني إنشاء جلسة تسجيل دخول حتى يمكنها التبديل إلى مستخدم لم يتم تسجيل الدخول؟
أحتاج فقط إلى دعم XP ، على الرغم من أنه سيكون من الجيد العمل على Vista / Seven. (رمزتي الحالية بالفعل)

أعلم أن هذا ممكن لأن Super Fast User Switcher يفعل ذلك. (على الرغم من أنها تحتاج إلى خدمة Windows للقيام بذلك)

أنا أكتب C#، لكن يمكنني ترجمة أي إجابة إلى C#.

هل كانت مفيدة؟

المحلول

لقد قمت بحل هذا في XP عن طريق استدعاء غير الموثقة InitiateInteractiveLogon وظيفة في ShellLocalMachine كوم كائن في shgina.dll.

هذه الطريقة ، التي لا يمكن استدعاؤها إلا بواسطة حساب النظام المحلي ، ستقوم بتسجيل المستخدم إلى وحدة التحكم. (لا يمكن تسجيل المستخدم إلى جلسة RDP)

لا يحتوي إصدار DLL المضمّن على Windows 7 (ويفترض أيضًا Vista) على هذه الطريقة.

نصائح أخرى

ما هي إصدارات Windows التي تريد استهدافها؟

أعتقد أنه لا توجد طريقة بسيطة. لنظام التشغيل Windows XP هناك جينا. بالنسبة لنظام التشغيل Windows Vista ، هناك "مقدمي الاعتماد".

أيضًا ، إذا كنت تستهدف Windows XP ، فيمكنك إنشاء خدمة ، والتي ترسل ضغطات المفاتيح إلى سطح مكتب WinLogon لتسجيل الدخول كما لو كان المستخدم يضغط عليها على لوحة المفاتيح. وقد تم ذلك بواسطة Realvnc أو Ultravnc ، لا أتذكر. ومع ذلك ، فإن هذا النهج لا يعمل في Windows Vista.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top