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
Utilizzare un numero per gestire la concorrenza ottimistica con SQL Server ed Entity Framework
Definire stili a livello di libreria in Angular
Ottimizzazione dei block template in Angular 17
Proteggere le risorse Azure con private link e private endpoints
Utilizzare il nuovo modello GPT-4o con Azure OpenAI
Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
Ottimizzare le pull con Artifact Cache di Azure Container Registry
Managed deployment strategy in Azure DevOps
Potenziare la ricerca su Cosmos DB con Full Text Search
Assegnare un valore di default a un parametro di una lambda in C#
Sfruttare gli embedding e la ricerca vettoriale con Azure SQL Database
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub
I più letti di oggi
- Utilizzare gli schematics di Capacitor per Angular
- Ottenere il riferimento alla finestra che ha aperto un'altra finestra con HTML5 e JavaScript
- Una chat P2P con Windows Communication Foundation
- Mostrare un Popup di Feedback nella Universal Windows Platform
- Applicare effetti di luce nella Universal Windows Platform