Cambio utente rapido in Windows 7. Cambio utente rapido in Windows XP. Come aggiungere un nuovo "Account"

Se osservate attentamente la schermata mostrata in Fig. 4.8, puoi notare un'altra innovazione interessante in Windows XP: l'opzione per il cambio rapido dell'utente (sessioni utente, Cambio rapido utente), che dovrebbe essere discusso in modo più dettagliato.

Questa funzionalità è destinata a fornire un metodo rapido e conveniente per migliorare la tecnologia di condivisione dei dati nei profili Windows NT, nonché un meccanismo efficiente per passare da un account utente all'altro.

Se questa proprietà è abilitata, gli utenti non dovranno disconnettersi perché gli account utente sono sempre connessi. In questo modo puoi passare rapidamente da un account aperto all'altro. Allo stesso tempo, gli utenti che in precedenza lavoravano nel sistema non hanno bisogno di lasciarlo e proteggono le loro applicazioni in esecuzione o le connessioni attive a Internet.

Windows XP con gli utenti registrati visualizza nuovamente il messaggio mentre tutte le applicazioni continuano a essere eseguite. Inoltre, lo schermo visualizzerà il numero di utenti connessi, la notifica dei messaggi e-mail non letti e il numero di programmi in esecuzione.

Windows XP Professional offre inoltre agli utenti la possibilità di accedere a dati e applicazioni da altre macchine. Sulle postazioni di lavoro aziendali dotate del sistema operativo Windows XP Professional, gli utenti hanno la possibilità di ottenere l'accesso remoto ai propri computer desktop. Quindi, ad esempio, puoi bloccare il computer dell'ufficio, tornare a casa e connetterti ad esso da casa. >

Riso. 4.9. Tab File non in linea finestra Proprietà della cartella

Nota Nota: sia Cambio rapido utente che Desktop remoto utilizzano la tecnologia Servizi terminal e consentono di lavorare con applicazioni Microsoft Win32 precedenti senza richiedere alcuna modifica. Se l'applicazione in uso è certificata per l'esecuzione su Windows 2000 o soddisfa le specifiche dell'applicazione per Windows 2000, verrà eseguita correttamente su Windows XP.

Va notato che la funzionalità Cambio rapido utente non funzionerà sulle workstation che eseguono Windows XP Professional che fanno parte di un dominio.

In Windows XP Home Edition o Windows XP Professional che operano su workstation autonome o come parte di gruppi di lavoro, è possibile abilitare/disabilitare la modalità Cambio rapido utente selezionando/deselezionando la casella di controllo Utilizza cambio utente rapido. Se questa casella di controllo è disattivata come mostrato in Fig. 4.8, aprire una finestra Proprietà della cartella(Opzioni cartella), vai alla scheda File non in linea(File offline) (Fig. 4.9) e deselezionare Utilizza file offline(Abilita file offline). Conferma le modifiche e quindi apri nuovamente la finestra Contabilità record dell'utente(Profili utente). Casella di controllo Utilizzare il cambio utente rapido(Utilizza Cambio rapido utente) diventerà ora disponibile (Fig. 4.10). >

Riso. 4.10. Casella di controllo Utilizzare il cambio utente rapido si è reso disponibile

Se non solo tu, ma anche altre persone utilizzano il PC, puoi creare il tuo account per ciascuno di essi. Puoi impostare il tuo "account" nel modo che preferisci: modificare lo screensaver del desktop, l'aspetto delle cartelle, la barra delle applicazioni, installare i programmi di cui hai bisogno e molto altro.

Per ogni utente viene creato un account con diritti di "Amministratore" o "Ospite". Nel primo caso, una persona avrà più opportunità. Potrà aprire alcuni programmi che saranno inaccessibili ad altri “utenti”, aggiungere ed eliminare account.

Quando "Seven" è installato sul computer ed è destinato al lavoro di più dipendenti, è necessario sapere come modificare l'utente in Windows 7. Dopo aver letto questo articolo, imparerai anche come modificare la password e il nome dell'account utilizzando un metodo a te conveniente. Di conseguenza, le tue informazioni saranno accessibili solo a te o alle persone a cui comunichi la tua password.

Come aggiungere un nuovo "Account"?

Per creare un account per un nuovo utente, dovrai andare nel menu Start e fare clic sull'icona situata nella parte superiore della finestra. Facendo clic sul collegamento "Gestisci un altro account", seleziona la casella che ti consente di creare un "account".

Si aprirà una pagina nella quale vedrai un box in cui dovrai inserire il nome utente e indicare il tipo di accesso (Amministratore o Normale). Ora fai clic su “Crea account”.

Se non vuoi che altre persone che lavorano sul tuo computer possano disinstallare programmi o modificare file importanti, impostalo su "Accesso generale". Se ti fidi completamente della persona, puoi concedergli i diritti di "Amministratore".

In pochi minuti puoi aggiungere un nuovo utente al tuo PC.

Come passare da un account all'altro in Windows 7?

Quindi, se sul tuo computer ogni utente del PC ha il proprio "account", allora devi sapere come passare da uno all'altro. Quando si avvia il computer, diventa possibile selezionare l'uno o l'altro “utente” facendo clic sull'icona corrispondente. Ma cosa succede se il sistema operativo è già caricato? Come cambiare utente in Windows 7?

Per passare da un account all'altro è possibile utilizzare uno dei seguenti metodi:

  • Premi contemporaneamente i pulsanti "Ctrl", "alt" e "Elimina". Si aprirà la “schermata Start”, dove sarà necessario cliccare su “Cambia utente”;
  • Usa i pulsanti di scelta rapida: Win+L. Il logo del sistema operativo "Windows" è raffigurato sul tasto "Win";
  • Vai a Inizio. Accanto all'opzione "Spegni", fai clic sul triangolo per visualizzare Seleziona l'opzione "Cambia utente".

Quindi, molto semplicemente, puoi passare da un “account” utente all’altro.

Come cambiare Windows 7?

Ogni utente PC può assegnare al proprio account un nome qualsiasi o modificarne uno esistente.

Ad esempio, se hai acquistato un computer usato, molto probabilmente vorrai cambiare il tuo nome utente. Puoi farlo anche utilizzando uno dei due semplici metodi:

  • Chiamata " Riga di comando" e inserisci lì "lusrmgr.msc" (senza virgolette). Apparirà una finestra in cui è necessario selezionare la sottosezione "Utenti". A destra, fai clic sull’“utente” che desideri rinominare. Nel menu contestuale, fare clic sull'opzione appropriata, quindi sul pulsante "Invio". Ora fai nuovamente clic con il pulsante destro del mouse sull'utente già rinominato e vai su "Proprietà". Hai bisogno della scheda Generale. Inserisci di nuovo qui il tuo nuovo nome.
  • Vai al menu Start e fai clic sull'icona quadrata nella parte superiore della finestra. Segui il collegamento "Cambia il nome del tuo account". Inserisci la tua opzione e fai clic su "Rinomina".

Come modificare la password di un utente?

Sai già come cambiare utente in Windows 7, ma cosa fare se hai bisogno di cambiare la password? Questo può essere fatto premendo i pulsanti “Ctrl”, “Elimina” e “Alt”. Ora seleziona "Cambia password..." e inserisci la password corrente, quindi quella nuova due volte. L'ultimo passaggio è confermare le tue azioni.

In alternativa, puoi andare su Start e fare clic sull'icona dell'utente. Nella finestra che si apre, segui il collegamento “Cambia password”. Inserisci due volte la tua password attuale e quella nuova nei campi appropriati.

Ora puoi modificare la password utente di Windows 7, proteggendoti così dal furto di informazioni preziose presenti sul tuo account.

Conclusione

Quindi, hai imparato come creare account utente, modificarne nome e password. Se un PC è destinato a più persone, è opportuno creare un "account" separato per ciascuna di esse. In questo caso, solo tu puoi avere i diritti di “Amministratore”.

L'utente potrà personalizzare l'aspetto del sistema operativo secondo le sue esigenze. Ad esempio, alcune persone desiderano che la "barra delle applicazioni" si trovi nella parte superiore o laterale dello schermo. Ad alcuni "utenti" non piace cambiare lo sfondo standard di Windows, altri vogliono vedere qualcosa di luminoso o divertente sul desktop. È possibile configurare qualsiasi "Account" in base alle proprie preferenze e, sapendo come cambiare utente in Windows 7, tutti saranno contenti, perché se necessario potranno passare al proprio "account".

Cercando su Google ho ottenuto:

  • Per cambiare sessione, utilizzare le funzioni wtsapi32.dll: WTSEnumerateSessions , WTSConnectSession , WTSDisconnectSession (Ora, quando guardo la descrizione di queste funzioni, dice che funziona con sessioni di lavoro remoto e, a dire il vero, sono un po' perplesso , ma per me funziona localmente, in modo impeccabile).
  • Per i tasti di scelta rapida, utilizzare le funzioni user32.dll: RegisterHotKey, UnregisterHotKey. Tutto è semplice qui.

Faccio subito la prenotazione e puoi lanciarmi i pomodori, ma ho scritto questa cosa in C#, anche se il lato positivo sarebbe ovviamente migliore, più nativo, ecc., ecc., ecc. Ma poi avevo appena iniziato a imparare il C# e avevo bisogno di esperienza, e una volta scritta la soluzione non c'era bisogno di riscriverla, anche se per trasferirla non ci sarebbe voluta più di una sera.

Quindi, per cominciare, è stata scritta una semplice applicazione Win32 con un pulsante, quando si cliccava, veniva eseguito qualcosa di simile al seguente codice:

Private void SwitchUser() ( IntPtr buffer = IntPtr.Zero; int count = 0; // ottiene l'elenco delle sessioni registrate if (WTSEnumerateSessions(WTS_CURRENT_SERVER_HANDLE, 0, 1, ref buffer, ref count)) ( WTS_SESSION_INFO sessionInfo = new WTS_SESSION_INFO ; // la parte più difficile: // converte attentamente la memoria non gestita in memoria gestita per (int indice = 0; indice< 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)) ( // se è presente una sessione inattiva, passa ad essa. WTSConnectSession(Convert.ToUInt64(targetSessId), Convert.ToUInt64(activeSessId), "", false); ) else ( / / se non ce ne sono di inattivi, basta disconnettersi (vai alla schermata di selezione dell'utente) WTSDisconnectSession(WTS_CURRENT_SERVER_HANDLE, activeSessId, false); ) ) // assicurati di cancellare la memoria WTSFreeMemory(buffer); )

Con due sessioni, sessionInfo avrà 3 elementi: sessione servizi, 1a sessione utente, 2a sessione utente. Di conseguenza, targetSessId e activeSessId verranno determinati in modo univoco. Per più di 2 sessioni avverrà il passaggio tra quella attiva e l'ultima inattiva.

Ma qui ho avuto una leggera sfortuna. Qualcuno potrebbe già intuire che le cose non sarebbero andate così. Quando una WTSConnectSession viene eseguita dall'applicazione, l'utente attivo viene disconnesso, ma il secondo utente viene abilitato, ma non. Quelli. In poche parole, l'applicazione di un utente non può avviare l'accesso di un altro utente. Ma il servizio può farlo! Sì, è un peccato, ma senza un servizio di sistema non potremo fare nulla. Ok, creiamo un servizio di sistema in cui aggiungeremo questo codice. È qui che C# e .Net tornano utili, poiché scrivere un servizio utilizzando queste tecnologie è molto, molto semplice. Ora sorge il seguente problema: il servizio non ha un'interfaccia utente, ad es. l'utente non può influenzare direttamente il funzionamento del servizio e il servizio non può sentire le azioni dell'utente. Non è possibile allegare un tasto di scelta rapida a un servizio.

Quindi ecco la nostra soluzione:
L'applicazione utente ascolta l'utente e, quando viene rilevato un tasto di scelta rapida, invia un segnale al servizio di sistema, che esegue il passaggio.

Resta ben poco, ma anche qui troverò qualcosa da mostrarvi. Ad esempio, abbiamo bisogno di un'applicazione desktop, senza Windows, ma che accetti i tasti di scelta rapida. Questo può essere fatto come fanno tutti gli altri: nascondi la finestra principale dell'applicazione e non mostrarla. Ma esiste una soluzione migliore. Scrivi il tuo ApplicationContext. Con il nero
Ad esempio questo:

Classe interna SUApplicationContext: ApplicationContext ( private Hotkey hk; private Form form; private const int SWITCH_USER_COMMAND = 193; internal SUApplicationContext() ( // basta creare il form, è ancora necessario // per ascoltare i tasti di scelta rapida form = new Form(); // crea un tasto di scelta rapida globale Win+A hk = new Hotkey(Keys.A, false, false, false, true); // delega il gestore eventi hk.Pressed += delegate ( SendSwitchCommand(); ); // registra il tasto di scelta rapida se possiamo if (hk.GetCanRegister(form)) hk.Register(form); // Allega un evento all'output Application.ApplicationExit += Application_ApplicationExit; ) private void SendSwitchCommand() ( // Descrivi il nostro servizio ServiceController sc = new ServiceController("Sus") ; prova ( // invia un comando sc.ExecuteCommand(SWITCH_USER_COMMAND); ) catch (Exception ex) ( MessageBox.Show(ex.Message); ) ) void Application_ApplicationExit(object sender, EventArgs e) ( // annulla la registrazione del tasto di scelta rapida all'uscita if (hk.Registered) hk.Unregister(); ) ) static void Main() ( Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new SUApplicationContext()); )

Qui utilizzo l'interfaccia MovablePython.Hotkey trovata su Internet tramite le funzioni user32.dll RegisterHotKey, UnregisterHotKey.

E un paio di righe sul servizio stesso.

Override protetto void OnCustomCommand(int comando) ( base.OnCustomCommand(comando); if (comando == SWITCH_USER_COMMAND) ( SwitchUser(); ) )

Sovrascriviamo l'evento OnCustomCommand e quando riceviamo il nostro comando eseguiamo la funzione che ci è già nota.

Non resta che registrarsi e avviare il servizio e mettere in avvio l'applicazione per ciascun utente.

Tutto. Ora, dopo che il primo utente accede dopo aver avviato il computer e premuto Win+A, la sua sessione viene disconnessa e viene visualizzata la finestra di selezione dell'utente. Il secondo utente entra, preme Win+A: viene visualizzata la sessione del primo utente. Eccetera.

Puoi controllare i sorgenti su github. Oppure puoi scaricare l'intero progetto e i file eseguibili compilati e pronti all'uso.

Cercando su Google ho ottenuto:

  • Per cambiare sessione, utilizzare le funzioni wtsapi32.dll: WTSEnumerateSessions , WTSConnectSession , WTSDisconnectSession (Ora, quando guardo la descrizione di queste funzioni, dice che funziona con sessioni di lavoro remoto e, a dire il vero, sono un po' perplesso , ma per me funziona localmente, in modo impeccabile).
  • Per i tasti di scelta rapida, utilizzare le funzioni user32.dll: RegisterHotKey, UnregisterHotKey. Tutto è semplice qui.
Faccio subito la prenotazione e puoi lanciarmi i pomodori, ma ho scritto questa cosa in C#, anche se il lato positivo sarebbe ovviamente migliore, più nativo, ecc., ecc., ecc. Ma poi avevo appena iniziato a imparare il C# e avevo bisogno di esperienza, e una volta scritta la soluzione non c'era bisogno di riscriverla, anche se per trasferirla non ci sarebbe voluta più di una sera.

Quindi, per cominciare, è stata scritta una semplice applicazione Win32 con un pulsante, quando si cliccava, veniva eseguito qualcosa di simile al seguente codice:
private void SwitchUser() ( IntPtr buffer = IntPtr.Zero; int count = 0; // ottiene l'elenco delle sessioni registrate if (WTSEnumerateSessions(WTS_CURRENT_SERVER_HANDLE, 0, 1, ref buffer, ref count)) ( WTS_SESSION_INFO sessionInfo = new WTS_SESSION_INFO ; // la parte più difficile: // converte attentamente la memoria non gestita in memoria gestita per (int indice = 0; indice< 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)) ( // se è presente una sessione inattiva, passa ad essa. WTSConnectSession(Convert.ToUInt64(targetSessId), Convert.ToUInt64(activeSessId), "", false); ) else ( / / se non ce ne sono di inattivi, basta disconnettersi (vai alla schermata di selezione dell'utente) WTSDisconnectSession(WTS_CURRENT_SERVER_HANDLE, activeSessId, false); ) ) // assicurati di cancellare la memoria WTSFreeMemory(buffer); )
Con due sessioni, sessionInfo avrà 3 elementi: sessione servizi, 1a sessione utente, 2a sessione utente. Di conseguenza, targetSessId e activeSessId verranno determinati in modo univoco. Per più di 2 sessioni avverrà il passaggio tra quella attiva e l'ultima inattiva.

Ma qui ho avuto una leggera sfortuna. Qualcuno potrebbe già intuire che le cose non sarebbero andate così. Quando una WTSConnectSession viene eseguita dall'applicazione, l'utente attivo viene disconnesso, ma il secondo utente viene abilitato, ma non. Quelli. In poche parole, l'applicazione di un utente non può avviare l'accesso di un altro utente. Ma il servizio può farlo! Sì, è un peccato, ma senza un servizio di sistema non potremo fare nulla. Ok, creiamo un servizio di sistema in cui aggiungeremo questo codice. È qui che C# e .Net tornano utili, poiché scrivere un servizio utilizzando queste tecnologie è molto, molto semplice. Ora sorge il seguente problema: il servizio non ha un'interfaccia utente, ad es. l'utente non può influenzare direttamente il funzionamento del servizio e il servizio non può sentire le azioni dell'utente. Non è possibile allegare un tasto di scelta rapida a un servizio.

Quindi ecco la nostra soluzione:
L'applicazione utente ascolta l'utente e, quando viene rilevato un tasto di scelta rapida, invia un segnale al servizio di sistema, che esegue il passaggio.

Resta ben poco, ma anche qui troverò qualcosa da mostrarvi. Ad esempio, abbiamo bisogno di un'applicazione desktop, senza Windows, ma che accetti i tasti di scelta rapida. Questo può essere fatto come fanno tutti gli altri: nascondi la finestra principale dell'applicazione e non mostrarla. Ma esiste una soluzione migliore. Scrivi il tuo ApplicationContext. Con il nero
Ad esempio questo:
classe interna SUApplicationContext: ApplicationContext ( private Hotkey hk; private Form form; private const int SWITCH_USER_COMMAND = 193; internal SUApplicationContext() ( // basta creare il form, è ancora necessario // per ascoltare i tasti di scelta rapida form = new Form(); // crea un tasto di scelta rapida globale Win+A hk = new Hotkey(Keys.A, false, false, false, true); // delega il gestore eventi hk.Pressed += delegate ( SendSwitchCommand(); ); // registra il tasto di scelta rapida se possiamo if (hk.GetCanRegister(form)) hk.Register(form); // Allega un evento all'output Application.ApplicationExit += Application_ApplicationExit; ) private void SendSwitchCommand() ( // Descrivi il nostro servizio ServiceController sc = new ServiceController("Sus") ; prova ( // invia un comando sc.ExecuteCommand(SWITCH_USER_COMMAND); ) catch (Exception ex) ( MessageBox.Show(ex.Message); ) ) void Application_ApplicationExit(object sender, EventArgs e) ( // annulla la registrazione del tasto di scelta rapida all'uscita if (hk.Registered) hk.Unregister(); ) ) static void Main() ( Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new SUApplicationContext()); )
Qui utilizzo l'interfaccia MovablePython.Hotkey trovata su Internet tramite le funzioni user32.dll RegisterHotKey, UnregisterHotKey.

E un paio di righe sul servizio stesso.
override protetto void OnCustomCommand(int comando) ( base.OnCustomCommand(comando); if (comando == SWITCH_USER_COMMAND) ( SwitchUser(); ) )
Sovrascriviamo l'evento OnCustomCommand e quando riceviamo il nostro comando eseguiamo la funzione che ci è già nota.

Non resta che registrarsi e avviare il servizio e mettere in avvio l'applicazione per ciascun utente.

Tutto. Ora, dopo che il primo utente accede dopo aver avviato il computer e premuto Win+A, la sua sessione viene disconnessa e viene visualizzata la finestra di selezione dell'utente. Il secondo utente entra, preme Win+A: viene visualizzata la sessione del primo utente. Eccetera.

Puoi controllare i sorgenti su github. Oppure puoi scaricare l'intero progetto e i file eseguibili compilati e pronti all'uso.

glavpom.ru - Sottostazioni. Elettronica di potenza. Ecologia. Ingegnere elettrico