Windows 7 дээр хэрэглэгчийг хурдан солих. Windows хэрэглэгчийг маш хурдан солих. Хэрхэн шинэ "Бүртгэл" нэмэх вэ

Хэрэв компьютерийг зөвхөн та төдийгүй бусад хүмүүс ашигладаг бол тэдгээрийн хувьд та өөрийн дансаа үүсгэж болно. Та "бүртгэл"-ийг өөрт тохирсон байдлаар тохируулж болно: ширээний дэлгэц амраагч, хавтасны харагдах байдал, ажлын самбарыг өөрчлөх, хэрэгтэй програмаа суулгах гэх мэт.

Аливаа хэрэглэгчийн хувьд "Администратор" эсвэл "Зочин" гэсэн эрхтэй данс бий болно. Эхний тохиолдолд хүн илүү их боломжуудтай болно. Тэрээр бусад "хэрэглэгчид" хандах боломжгүй зарим програмыг нээх, бүртгэл нэмэх, устгах боломжтой болно.

Компьютер дээр "долоо" суулгасан бөгөөд энэ нь хэд хэдэн ажилчдын ажилд зориулагдсан бол Windows 7-д хэрэглэгчийг хэрхэн өөрчлөх талаар мэдэх хэрэгтэй. Энэ нийтлэлийг уншсаны дараа та өөрт тохирсон аргыг ашиглан нууц үг, дансны нэрийг хэрхэн өөрчлөх талаар сурах болно. Үүний үр дүнд таны мэдээлэл зөвхөн танд эсвэл нууц үгээ хуваалцсан хүмүүст нээлттэй байх болно.

Хэрхэн шинэ "Бүртгэл" нэмэх вэ?

Шинэ хэрэглэгчийн бүртгэл үүсгэхийн тулд та Start цэс рүү очоод цонхны дээд талд байрлах дүрс дээр дарах хэрэгтэй. "Өөр данс удирдах" холбоос дээр дарснаар "бүртгэл" үүсгэх боломжтой нүдийг чагтална уу.

Хуудас нээгдэх бөгөөд та хэрэглэгчийн нэр оруулах ба хандалтын төрлийг (Администратор эсвэл Энгийн) зааж өгөх шаардлагатай баганыг харах болно. Одоо "Бүртгэл үүсгэх" дээр дарна уу.

Хэрэв таны компьютер дээр ажиллаж байгаа бусад хүмүүс програмыг устгах эсвэл чухал файлуудыг өөрчлөхийг хүсэхгүй байгаа бол үүнийг Хэвийн хандалт болгож тохируулна уу. Хэрэв та тухайн хүнд бүрэн итгэдэг бол түүнд "Администратор" -ын эрхийг өгч болно.

Хэдхэн минутын дотор та компьютер дээрээ шинэ хэрэглэгч нэмэх боломжтой.

Windows 7 дээрх данс хооронд хэрхэн шилжих вэ?

Тиймээс, хэрэв таны компьютер дээр PC хэрэглэгч бүр өөрийн гэсэн "акаунттай" бол тэдгээрийн хооронд хэрхэн шилжихээ мэдэх хэрэгтэй. Компьютерээ асаахад харгалзах дүрс дээр дарж нэг буюу өөр "хэрэглэгч"-ийг сонгох боломжтой болно. Гэхдээ үйлдлийн систем аль хэдийн ачаалагдсан бол яах вэ? Windows 7 дээр хэрэглэгчийг хэрхэн өөрчлөх вэ?

Нэг бүртгэлээс нөгөө данс руу шилжихийн тулд та дараах аргуудын аль нэгийг ашиглаж болно.

  • "Ctrl", "alt" болон "Устгах" товчийг нэгэн зэрэг дарна уу. "Нүүр дэлгэц" нээгдэх бөгөөд та "Хэрэглэгчийг өөрчлөх" дээр дарах хэрэгтэй;
  • "Халуун товчлуурууд" - Win + L ашиглана уу. "Win" товчлуур нь "Windows" үйлдлийн системийн логог харуулдаг;
  • Эхлэлийг оруулна уу. "Унтраах" сонголтын хажууд гурвалжин дээр товшоод "Хэрэглэгчийг өөрчлөх" сонголтыг сонгоно уу.

Тиймээс, та хэрэглэгчдийн "бүртгэл" хооронд шилжих боломжтой.

Windows 7-г хэрхэн өөрчлөх вэ?

Компьютерийн хэрэглэгч бүр өөрийн акаунтдаа ямар ч нэр өгөх эсвэл одоо байгаа нэрийг өөрчлөх боломжтой.

Жишээлбэл, хэрэв та хуучин компьютер худалдаж авсан бол хэрэглэгчийн нэрээ өөрчлөхийг хүсч болно. Та мөн хоёр энгийн аргын аль нэгийг ашиглан үүнийг хийж болно:

  • "Command Prompt" руу залгаад "lusrmgr.msc" гэж оруулна уу (хашилтгүйгээр). "Хэрэглэгчид" дэд хэсгийг сонгох шаардлагатай цонх гарч ирнэ. Баруун талд, нэрийг өөрчлөхийг хүсч буй "хэрэглэгч" дээр дарна уу. Контекст цэсэнд тохирох сонголтыг сонгоод "Enter" товчийг дарна уу. Одоо дахин нэр нь өөрчлөгдсөн RMB хэрэглэгч дээр товшоод "Properties" руу очно уу. Танд Ерөнхий таб хэрэгтэй. Шинэ нэрийг энд дахин оруулна уу.
  • Start цэс рүү ороод цонхны дээд талд байрлах дөрвөлжин дүрс дээр дарна уу. "Бүртгэлийнхээ нэрийг өөрчлөх" холбоос дээр дарна уу. Сонголтоо оруулаад "Нэрээ өөрчлөх" дээр дарна уу.

Хэрэглэгчийн нууц үгийг хэрхэн өөрчлөх вэ?

Та Windows 7-д хэрэглэгчийг хэрхэн өөрчлөхийг аль хэдийн мэддэг байсан ч нууц үгээ солих шаардлагатай бол яах вэ? Үүнийг "Ctrl", "Устгах" болон "Alt" товчийг дарж хийж болно. Одоо "Нууц үг солих ..." гэснийг сонгоод одоогийн нууц үгээ оруулаад шинийг хоёр удаа оруулна уу. Сүүлийн алхам бол үйлдлээ баталгаажуулах явдал юм.

Эсвэл та "Эхлүүлэх" хэсэгт очоод хэрэглэгчийн дүрс дээр дарж болно. Нээгдсэн цонхонд "Нууц үгээ солих" холбоос дээр дарна уу. Одоогийн болон шинэ нууц үгийг холбогдох талбарт хоёр удаа оруулна уу.

Одоо та Windows 7 хэрэглэгчийн нууц үгээ солих боломжтой бөгөөд ингэснээр таны дансанд байгаа үнэ цэнэтэй мэдээллийг хулгайлахаас өөрийгөө хамгаалах болно.

Дүгнэлт

Тиймээс та хэрэглэгчийн бүртгэл үүсгэх, нэр, нууц үгээ өөрчлөх талаар сурсан. Хэрэв нэг компьютер нь хэд хэдэн хүнд зориулагдсан бол тус бүрдээ тусдаа "данс" үүсгэх нь зүйтэй юм. Энэ тохиолдолд зөвхөн та "Администратор" эрхтэй болно.

Хэрэглэгч OS-ийн гадаад төрхийг хүссэнээрээ өөрчлөх боломжтой болно. Жишээлбэл, зарим хүмүүс Taskbar нь дэлгэцийн дээд талд эсвэл хажуу талд байгаасай гэж хүсдэг. Зарим "хэрэглэгч" Windows-ийн стандарт ханын цаасыг өөрчлөх дургүй байдаг бол зарим нь ширээний компьютер дээр ямар нэгэн тод, хөгжилтэй зүйлийг харахыг хүсдэг. Та өөрийн сонголтын дагуу ямар ч "Бүртгэл" -ийг тохируулах боломжтой бөгөөд Windows 7-д хэрэглэгчийг хэрхэн өөрчлөхийг мэддэг бол хүн бүр сэтгэл хангалуун байх болно, учир нь шаардлагатай бол тэд "данс" руугаа шилжих боломжтой.

Зурагт үзүүлсэн дэлгэцийг сайтар харвал. 4.8, та Windows XP-ийн өөр нэг сонирхолтой шинэлэг зүйлийг харж болно - хэрэглэгчийг хурдан солих (хэрэглэгчийн сесс, хурдан хэрэглэгчийн шилжих) сонголтыг илүү нарийвчлан авч үзэх хэрэгтэй.

Энэ функц нь Windows NT профайл хуваалцах технологийг сайжруулах хурдан бөгөөд тохиромжтой арга, мөн хэрэглэгчийн бүртгэл хооронд шилжих үр ашигтай механизмаар хангах зорилготой юм.

Хэрэв энэ өмчийг идэвхжүүлсэн бол хэрэглэгчийн бүртгэлүүд байнга холбогдсон тул хэрэглэгчид гарах шаардлагагүй. Ингэснээр та бүх нээлттэй данс хооронд хурдан шилжих боломжтой. Үүний зэрэгцээ, өмнө нь системд ажиллаж байсан хэрэглэгчид гарч, ажиллаж байгаа програмууд эсвэл идэвхтэй интернет холболтоо хамгаалах шаардлагагүй болно.

Хэрэглэгчид нэвтэрсэн Windows XP систем нь бүх програмууд ажиллаж байх хооронд цонхыг дахин харуулна. Үүнээс гадна дэлгэцэнд холбогдсон хэрэглэгчдийн тоо, уншаагүй цахим шуудангийн мэдэгдэл, ажиллаж буй програмуудын тоо харагдах болно.

Windows XP Professional нь хэрэглэгчдэд бусад машинаас өгөгдөл болон програмд ​​хандах боломжийг олгодог. Windows XP Professional үйлдлийн системээр тоноглогдсон бизнесийн ажлын станцууд дээр хэрэглэгчид өөрсдийн ширээний компьютерт алсаас хандах боломжтой. Жишээлбэл, та оффисын компьютерээ түгжиж, гэртээ харьж, гэрээсээ холбогдож болно. >

Цагаан будаа. 4.9.Таб Офлайн файлуудцонх Фолдерын шинж чанарууд

Анхаарна уу : Хэрэглэгчийг хурдан сэлгэх болон Алсын ширээний компьютерийн функцууд нь Терминал үйлчилгээний технологийг ашигладаг бөгөөд хуучин Microsoft Win32 программууд дээр ямар нэгэн өөрчлөлт оруулах шаардлагагүйгээр ажиллах боломжийг олгодог. Хэрэв таны хэрэглэж буй програм Windows 2000 дээр ажиллахаар баталгаажсан эсвэл "Windows 2000-д зориулсан програмын тодорхойлолт"-д нийцсэн бол Windows XP дээр амжилттай ажиллах болно.

Хэрэглэгчийг хурдан сэлгэх нь домэйны гишүүн Windows XP Professional үйлдлийн систем дээр ажиллахгүй гэдгийг анхаарна уу.

Бие даасан ажлын станцууд эсвэл ажлын бүлгүүд дээр ажилладаг Windows XP Home Edition эсвэл Windows XP Professional үйлдлийн системд (Хурдан хэрэглэгчийн шилжүүлэлтийг ашиглах) хайрцгийг чагтална уу/ чагтыг арилгаснаар "Fast User Switching" горимыг идэвхжүүлэх/идэвхгүй болгох боломжтой. Хэрэв энэ тэмдэглэгээг Зураг дээр үзүүлсэн шиг саарал өнгөтэй болгосон бол. 4.8, цонхыг нээнэ үү Фолдерын шинж чанарууд(Хавтасны сонголтууд), таб руу очно уу Офлайн файлууд(Оффлайн файлууд) (Зураг 4.9) болон тэмдэглэгээг арилгана уу Офлайн файлуудыг ашиглах(Офлайн файлуудыг идэвхжүүлэх). Өөрчлөлтөө баталгаажуулаад цонхыг дахин нээнэ үү Нягтлан бодох бүртгэл хэрэглэгчийн бүртгэл(Хэрэглэгчийн данс). Checkbox Хэрэглэгчийг хурдан солих аргыг ашигла(Use Fast User Switching) одоо боломжтой болно (Зураг 4.10). >

Цагаан будаа. 4.10. Checkbox Хэрэглэгчийг хурдан солих аргыг ашиглаболомжтой болсон

Googling дараах зүйлийг хийсэн.

  • Сешнүүдийг солихын тулд wtsapi32.dll функцуудыг ашиглана уу: WTSenumerateSessions , WTSConnectSession , WTSDisconnectSession (Одоо би эдгээр функцуудын тайлбарыг харахад энэ нь алсын зайн ажлын сессүүдтэй ажилладаг гэж хэлж байгаа бөгөөд үнэнийг хэлэхэд би бага зэрэг ажиллаж байна. алдагдал, гэхдээ энэ нь миний хувьд орон нутагт, өө сэвгүй ажилладаг) .
  • Халуун товчлуурын хувьд user32.dll функцийг ашиглана уу: RegisterHotKey , UnregisterHotKey . Энд бүх зүйл энгийн.
Би тэр даруй захиалга өгөх болно, та над руу улаан лооль шидэж болно, гэхдээ би энэ хэргийг c # дээр бичсэн, гэхдээ сайн талуудын хувьд энэ нь илүү сайн, илүү төрөлх гэх мэт байх болно, гэх мэт .. .Харин дараа нь би дөнгөж c # сурч эхэлсэн бөгөөд надад туршлага хэрэгтэй байсан бөгөөд шийдлийг бичихэд үүнийг дахин бичих шаардлагагүй байсан ч шилжүүлэхэд нэг оройноос илүү хугацаа шаардагдахгүй.

Тиймээс, эхлэгчдэд энгийн win32 програмыг товчлуураар бичсэн бөгөөд үүнийг дарахад ойролцоогоор дараах кодыг гүйцэтгэв.
private void SwitchUser() ( IntPtr буфер = IntPtr.Zero; int count = 0; // хэрэв (WTSenumerateSessions(WTS_CURRENT_SERVER_HANDLE, 0, 1, ref buffer, ref count))) нэвтэрсэн сешнүүдийн жагсаалтыг авах ( WTSIN_SESSION_ new = WTS_SESSION_INFO; // хамгийн хэцүү хэсэг: // удирдагдаагүй санах ойг удирддаг санах ой руу болгоомжтой хөрвүүлэх (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, худал); ) ) // санах ойг цэвэрлэхээ мартуузай WTSFreeMemory(buffer); )
Хоёр сесстэй бол sessionInfo нь үйлчилгээний сесс, хэрэглэгчийн 1-р сесс, 2-р хэрэглэгчийн сесс гэсэн 3 элементтэй байх болно. Үүний дагуу targetSessId болон activeSessId нь өвөрмөц байдлаар тодорхойлогдоно. 2-оос дээш сессийн үед идэвхтэй болон сүүлийн идэвхгүй хооронд шилжих болно.

Гэхдээ энд бага зэрэг хоцорсон. Зарим нь үүнийг бүтэхгүй гэж аль хэдийн таамагласан байж магадгүй юм. WTSConnectSession-г програмаас ажиллуулах үед идэвхтэй хэрэглэгч салгагдах боловч хоёр дахь хэрэглэгч идэвхжээгүй байна. Тэдгээр. Энгийнээр хэлэхэд нэг хэрэглэгчийн програм өөр хэрэглэгчийн нэвтрэлтийг эхлүүлэх боломжгүй. Гэхдээ үйлчилгээ үүнийг хийж чадна! Тийм ээ, харамсалтай байна, гэхдээ системийн үйлчилгээ байхгүй бол бид амжилтанд хүрэхгүй. За, энэ кодыг шидэх системийн үйлчилгээг бий болгоё. Энд C# болон .Net хэрэг болно, учир нь эдгээр технологи дээр үйлчилгээ бичих нь маш энгийн байдаг. Одоо дараах асуудал гарч ирж байна: үйлчилгээ нь хэрэглэгчийн интерфэйсгүй, i.e. хэрэглэгч үйлчилгээний үйл ажиллагаанд шууд нөлөөлөх боломжгүй, үйлчилгээ нь хэрэглэгчийн үйлдлийг сонсох боломжгүй. Та үйлчилгээнд халуун товчлуур тавьж болохгүй.

Тиймээс бидний шийдэл энд байна:
Хэрэглэгчийн програм нь хэрэглэгчийг сонсдог бөгөөд халуун товчлуур илэрсэн үед шилжүүлэгчийг гүйцэтгэдэг системийн үйлчилгээ рүү дохио илгээдэг.

Маш бага үлдлээ, гэхдээ энд ч гэсэн танд үзүүлэх зүйл байна. Жишээлбэл, бидэнд цонхгүй ширээний програм хэрэгтэй, гэхдээ халуун товчлуурыг хүлээн авах боломжтой. Та бусад хүмүүсийн хийдэг шиг үүнийг хийж болно: Програмын үндсэн цонхыг нууж, бүү харуул. Гэхдээ илүү сайн шийдэл бий. ApplicationContext-ээ бичнэ үү. C хар
Жишээ нь иймэрхүү:
дотоод анги SUApplicationContext: ApplicationContext ( private Hotkey hk; private Form form; private const int SWITCH_USER_COMMAND = 193; дотоод SUApplicationContext() ( // зүгээр л маягт үүсгэнэ үү, танд хэрэгтэй хэвээр байна // hotkeys сонсох form = new Form(); // global hotkey үүсгэх Win+A hk = new Hotkey(Keys.A, false, false, false, true); // төлөөлөгчийн үйл явдал зохицуулагч hk.Pressed += delegate ( SendSwitchCommand(); ); // хэрэв бид халуун товчлуурыг бүртгүүлнэ үү. can if (hk.GetCanRegister(form)) hk.Register(form); // Гаралт дээр үйл явдал өлгөх Application.ApplicationExit += Application_ApplicationExit; ) private void SendSwitchCommand() ( // Манай үйлчилгээг тайлбарлах ServiceController sc = new ServiceController( "Sus"); оролдох ( // түүн рүү команд илгээх sc.ExecuteCommand(SWITCH_USER_COMMAND); ) catch (Үл хамаарах тохиолдол) ( MessageBox.Show(ex.Message); ) ) void Application_ApplicationExit(объект илгээгч, EventArgs e) ( / / хэрэв (hk.Registered) гарах үед халуун товчийг бүртгэлээс хасна уу. hk.Unregister(); ) ) статик хүчингүй Main() ( Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(худал); Application.Run(шинэ SUApplicationContext()); )
Энд би user32.dll RegisterHotKey, UnregisterHotKey функцуудаар интернетээс олдсон MovablePython.Hotkey интерфейсийг ашигладаг.

Мөн үйлчилгээний талаар хэдэн мөр.
хамгаалагдсан хүчингүй болгох OnCustomCommand(int команд) ( base.OnCustomCommand(command); хэрэв (команд == SWITCH_USER_COMMAND) ( SwitchUser(); ) )
Бид OnCustomCommand үйл явдлыг дарж, бидний тушаалыг хүлээн авах үед бид аль хэдийн мэддэг функцээ гүйцэтгэдэг.

Бүртгүүлэх, үйлчилгээг эхлүүлэх, хэрэглэгч бүрийн хувьд програмыг эхлүүлэхэд л үлддэг.

Бүгд. Эхний хэрэглэгч компьютераа ажиллуулсны дараа нэвтэрч Win+A товчийг дарсны дараа түүний сесс салгагдаж, хэрэглэгч сонгох цонх гарч ирнэ. Хоёрдахь хэрэглэгч орж, Win + A дарна - эхний хэрэглэгчийн сесс гарч ирнэ. гэх мэт.

Github дээр та эх сурвалжийг шалгаж болно. Эсвэл та бүх төслийг болон эмхэтгэсэн, ажиллуулахад бэлэн програмуудыг татаж авах боломжтой.

Googling дараах зүйлийг хийсэн.

  • Сешнүүдийг солихын тулд wtsapi32.dll функцуудыг ашиглана уу: WTSenumerateSessions , WTSConnectSession , WTSDisconnectSession (Одоо би эдгээр функцуудын тайлбарыг харахад энэ нь алсын зайн ажлын сессүүдтэй ажилладаг гэж хэлж байгаа бөгөөд үнэнийг хэлэхэд би бага зэрэг ажиллаж байна. алдагдал, гэхдээ энэ нь миний хувьд орон нутагт, өө сэвгүй ажилладаг) .
  • Халуун товчлуурын хувьд user32.dll функцийг ашиглана уу: RegisterHotKey , UnregisterHotKey . Энд бүх зүйл энгийн.

Би тэр даруй захиалгаа өгөх болно, та над руу улаан лооль шидэж болно, гэхдээ би энэ хэргийг c # дээр бичсэн, гэхдээ сайн талуудын хувьд энэ нь илүү сайн, илүү төрөлх гэх мэт байх болно, гэх мэт .. .Харин дараа нь би дөнгөж c # сурч эхэлсэн бөгөөд надад туршлага хэрэгтэй байсан бөгөөд шийдлийг бичихэд үүнийг дахин бичих шаардлагагүй байсан ч шилжүүлэг нэг оройноос илүү хугацаа шаардагдахгүй.

Тиймээс, эхлэгчдэд энгийн win32 програмыг товчлуураар бичсэн бөгөөд үүнийг дарахад ойролцоогоор дараах кодыг гүйцэтгэв.

Private void SwitchUser() ( IntPtr buffer = IntPtr.Zero; int count = 0; // хэрэв (WTSEnumerateSessions(WTS_CURRENT_SERVER_HANDLE, 0, 1, ref buffer, ref count)) (ON = IntPtr.Zero; int count = 0; // нэвтэрсэн сешнүүдийн жагсаалтыг авах) ( WTSINFOESSIIn шинэ = WTS_SESSION_INFO; // хамгийн хэцүү хэсэг: // удирдагдаагүй санах ойг удирддаг санах ой руу болгоомжтой хөрвүүлэх (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, худал); ) ) // санах ойг цэвэрлэхээ мартуузай WTSFreeMemory(buffer); )

Хоёр сесстэй бол sessionInfo нь үйлчилгээний сесс, хэрэглэгчийн 1-р сесс, 2-р хэрэглэгчийн сесс гэсэн 3 элементтэй байх болно. Үүний дагуу targetSessId болон activeSessId нь өвөрмөц байдлаар тодорхойлогдоно. 2-оос дээш сессийн үед идэвхтэй болон сүүлийн идэвхгүй хооронд шилжих болно.

Гэхдээ энд бага зэрэг хоцорсон. Зарим нь үүнийг бүтэхгүй гэж аль хэдийн таамагласан байж магадгүй юм. WTSConnectSession-г програмаас ажиллуулах үед идэвхтэй хэрэглэгч салгагдах боловч хоёр дахь хэрэглэгч идэвхжээгүй байна. Тэдгээр. Энгийнээр хэлэхэд нэг хэрэглэгчийн програм өөр хэрэглэгчийн нэвтрэлтийг эхлүүлэх боломжгүй. Гэхдээ үйлчилгээ үүнийг хийж чадна! Тийм ээ, харамсалтай байна, гэхдээ системийн үйлчилгээ байхгүй бол бид амжилтанд хүрэхгүй. За, энэ кодыг шидэх системийн үйлчилгээг бий болгоё. Энд C# болон .Net хэрэг болно, учир нь эдгээр технологи дээр үйлчилгээ бичих нь маш энгийн байдаг. Одоо дараах асуудал гарч ирж байна: үйлчилгээ нь хэрэглэгчийн интерфэйсгүй, i.e. хэрэглэгч үйлчилгээний үйл ажиллагаанд шууд нөлөөлөх боломжгүй, үйлчилгээ нь хэрэглэгчийн үйлдлийг сонсох боломжгүй. Та үйлчилгээнд халуун товчлуур тавьж болохгүй.

Тиймээс бидний шийдэл энд байна:
Хэрэглэгчийн програм нь хэрэглэгчийг сонсдог бөгөөд халуун товчлуур илэрсэн үед шилжүүлэгчийг гүйцэтгэдэг системийн үйлчилгээ рүү дохио илгээдэг.

Маш бага үлдлээ, гэхдээ энд ч гэсэн танд үзүүлэх зүйл байна. Жишээлбэл, бидэнд цонхгүй ширээний програм хэрэгтэй, гэхдээ халуун товчлуурыг хүлээн авах боломжтой. Та бусад хүмүүсийн хийдэг шиг үүнийг хийж болно: Програмын үндсэн цонхыг нууж, бүү харуул. Гэхдээ илүү сайн шийдэл бий. ApplicationContext-ээ бичнэ үү. C хар
Жишээ нь иймэрхүү:

Дотоод анги SUApplicationContext: ApplicationContext ( private Hotkey hk; private Form form; private const int SWITCH_USER_COMMAND = 193; дотоод SUApplicationContext() ( // зүгээр л маягт үүсгэнэ үү, энэ нь шаардлагатай хэвээр байна // hotkeys сонсох form = new Form(); / / global hotkey үүсгэх Win+A hk = new Hotkey(Keys.A, false, false, false, true); // төлөөлөгчийн үйл явдал зохицуулагч hk.Pressed += delegate ( SendSwitchCommand(); ); // боломжтой бол халуун товчлуурыг бүртгүүлнэ үү. if (hk.GetCanRegister(form)) hk.Register(form); // Гаралт дээр үйл явдал өлгөх Application.ApplicationExit += Application_ApplicationExit; ) private void SendSwitchCommand() ( // Манай үйлчилгээг тайлбарлах ServiceController sc = new ServiceController(" Sus") ; оролдох ( // түүн рүү команд илгээх sc.ExecuteCommand(SWITCH_USER_COMMAND); ) catch (Exception ex) ( MessageBox.Show(ex.Message); ) ) void Application_ApplicationExit(объект илгээгч, EventArgs e) ( // (Hk.Registered) бол гаралтын товчлуурын бүртгэлээс хасна уу. hk.Unregister(); ) ) статик хүчингүй Main() ( Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(худал); Application.Run(шинэ SUApplicationContext()); )

Энд би user32.dll RegisterHotKey, UnregisterHotKey функцуудаар интернетээс олдсон MovablePython.Hotkey интерфейсийг ашигладаг.

Мөн үйлчилгээний талаар хэдэн мөр.

Хамгаалагдсан хүчингүй болгох хүчингүй OnCustomCommand(int команд) ( base.OnCustomCommand(command); хэрэв (команд == SWITCH_USER_COMMAND) ( SwitchUser(); ) )

Бид OnCustomCommand үйл явдлыг дарж, бидний тушаалыг хүлээн авах үед бид аль хэдийн мэддэг функцээ гүйцэтгэдэг.

Бүртгүүлэх, үйлчилгээг эхлүүлэх, хэрэглэгч бүрийн хувьд програмыг эхлүүлэхэд л үлддэг.

Бүгд. Эхний хэрэглэгч компьютераа ажиллуулсны дараа нэвтэрч Win+A товчийг дарсны дараа түүний сесс салгагдаж, хэрэглэгч сонгох цонх гарч ирнэ. Хоёрдахь хэрэглэгч орж, Win + A дарна - эхний хэрэглэгчийн сесс гарч ирнэ. гэх мэт.

Github дээр та эх сурвалжийг шалгаж болно. Эсвэл та бүх төслийг болон эмхэтгэсэн, ажиллуулахад бэлэн програмуудыг татаж авах боломжтой.

Үүнтэй төстэй нийтлэлүүд

2022 parki48.ru. Бид хүрээ байшин барьж байна. Тохижилт. Барилга. Суурь.