Fin dalla prima versione di Windows 10 è disponibile una API, all'interno del namespace Windows.System, che permette di lavorare con gli utenti: in questo modo è più semplice realizzare applicazioni i cui dati da mostrare devono essere diversi in base all'utente loggato.
Gli utenti si possono recuperare direttamente dal sistema operativo, è sufficiente aggiungere una capability chiamata "User Account Information" e un paio di righe di codice:
IReadOnlyList<User> users = await User.FindAllAsync(UserType.LocalUser, UserAuthenticationStatus.LocallyAuthenticated); var currentUser = users.FirstOrDefault(); var firstName = (string)await currentUser.GetPropertyAsync(KnownUserProperties.FirstName); var lastName = (string)await currentUser.GetPropertyAsync(KnownUserProperties.LastName);
E' anche possibile recuperare l'eventuale immagine associata all'account, per poi mostrarla in un controllo Image nell'interfaccia grafica:
// recupero l'immagine specificando una dimensione var picture = await currentUser.GetPictureAsync(UserPictureSize.Size424x424); // creo una bitmapimage e gli assegno lo stream var bi = new BitmapImage(); await bi.SetSourceAsync(await picture.OpenReadAsync()); // assegno la bitmapimage all'immagine sulla UI UserImage.Source = bi;
La cosa interessante è che, nel codice appena mostrato, gli utenti vengono recuperati da una lista dei Microsoft Account registrati e si considera il primo come l'utente che ha avviato l'applicazione: potrebbe non essere sempre vero, pertanto è consigliato leggere l'utente direttamente allo startup, nel metodo OnLaunched:
protected override async void OnLaunched(LaunchActivatedEventArgs e) { var currentUser = e.User; ... }
Nel caso l'applicazione venga però sospesa, non è possibile risalire all'utente poiché passa da un metodo differente che non ha la proprietà User, ma è sufficiente salvare nello storage locale (o dovunque si preferisca) l'identificativo dell'utente, chiamato NonRoamableId, così che possa essere sempre recuperato a runtime tramite:
var localSettings = ApplicationData.Current.LocalSettings; var oldUserId = localSettings.Values["userId"]; var currentUser = User.GetFromId(oldUserId);
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Sfruttare al massimo i topic space di Event Grid MQTT
Cancellare una run di un workflow di GitHub
Referenziare un @layer più alto in CSS
Limitare le richieste lato server con l'interactive routing di Blazor 8
Migliorare la scalabilità delle Azure Function con il Flex Consumption
Evitare la script injection nelle GitHub Actions
Miglioramenti agli screen reader e al contrasto in Angular
Utilizzare il nuovo modello GPT-4o con Azure OpenAI
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
Utilizzare politiche di resiliency con Azure Container App
Utilizzare Tailwind CSS all'interno di React: primi componenti
Eseguire una ricerca avanzata per recuperare le issue di GitHub
I più letti di oggi
- Accedere con ASP.NET ad un documento XML creato dall'oggetto recordset di ADO e ASP
- Richiamare programmaticamente le operazioni di aggiornamento, eliminazione e inserimento di FormView, DetailsView e GridView
- Ricavare lo spazio occupato su disco dal nostro sito
- Realizzare siti sicuri con ASP.NET Web Pages
- Aumentare la scalabilità di ASP.NET Core Web API con caching client side