Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo argomento illustra come condividere oggetti denominati tra applicazioni UWP (Universal Windows Platform) e applicazioni Win32.
Oggetti denominati nelle applicazioni in pacchetto
Gli oggetti denominati offrono un modo semplice per i processi per condividere gli handle degli oggetti. Dopo che un processo ha creato un oggetto denominato, altri processi possono usare il nome per chiamare la funzione appropriata per aprire un handle all'oggetto. Gli oggetti denominati vengono comunemente usati per la sincronizzazione dei thread e la comunicazione interprocesso.
Per impostazione predefinita, le applicazioni in pacchetto possono accedere solo agli oggetti denominati creati. Per condividere oggetti denominati con applicazioni in pacchetto, le autorizzazioni devono essere impostate quando vengono creati gli oggetti e i nomi devono essere qualificati quando vengono aperti gli oggetti.
Creazione di oggetti denominati
Gli oggetti denominati vengono creati con un'API corrispondente Create :
Tutte queste API condividono un LPSECURITY_ATTRIBUTES parametro che consente al chiamante di specificare elenchi di controllo di accesso (ACL) per controllare quali processi possono accedere all'oggetto. Per condividere oggetti denominati con applicazioni in pacchetto, è necessario concedere l'autorizzazione all'interno degli elenchi di controllo di accesso quando vengono creati gli oggetti denominati.
Gli identificatori di sicurezza (SID) rappresentano le identità all'interno degli elenchi di controllo di accesso. Ogni applicazione in pacchetto ha il proprio SID in base al nome della famiglia di pacchetti. È possibile generare il SID per un'applicazione in pacchetto passando il nome della famiglia di pacchetti a DeriveAppContainerSidFromAppContainerName.
Annotazioni
Il nome della famiglia di pacchetti è disponibile tramite l'editor del manifesto del pacchetto in Visual Studio durante lo sviluppo, tramite il Centro per i partner per le applicazioni pubblicate tramite Microsoft Store o tramite il comando PowerShell Get-AppxPackage per le applicazioni già installate.
In questo esempio viene illustrato il modello di base necessario per l'ACL di un oggetto denominato. Per condividere oggetti denominati con applicazioni in pacchetto, compilare una struttura EXPLICIT_ACCESS per ogni applicazione:
grfAccessMode = GRANT_ACCESS-
grfAccessPermissions =autorizzazioni appropriate in base all'oggetto e all'utilizzo previsto- Diritti di accesso generico
- Sicurezza e diritti di accesso degli oggetti di sincronizzazione
- Sicurezza e autorizzazioni di accesso della mappatura dei file
grfInheritance = NO_INHERITANCETrustee.TrusteeForm = TRUSTEE_IS_SIDTrustee.TrusteeType = TRUSTEE_IS_USER-
Trustee.ptstrName =SID acquisito da DeriveAppContainerSidFromAppContainerName
Popolando il parametro LPSECURITY_ATTRIBUTES nelle chiamate Create utilizzando le regole di EXPLICIT_ACCESS per le applicazioni confezionate, è possibile concedere l'accesso a quelle applicazioni per aprire l'oggetto denominato.
Annotazioni
Le applicazioni Win32 possono accedere a tutti gli oggetti denominati creati dalle applicazioni in pacchetto purché qualificano i nomi degli oggetti durante l'apertura. Non è necessario concedere l'accesso.
Apertura di oggetti denominati
Gli oggetti con un nome vengono aperti passando un nome a una corrispondente API di Open.
Gli oggetti denominati creati da un'applicazione in pacchetto vengono creati all'interno dello spazio dei nomi dell'applicazione, altrimenti noto come percorso dell'oggetto denominato. Quando si aprono oggetti denominati creati da un'applicazione in pacchetto, i nomi degli oggetti devono essere preceduti dal percorso dell'oggetto denominato dell'applicazione di creazione.
GetAppContainerNamedObjectPath restituirà il percorso dell'oggetto denominato per un'applicazione in pacchetto in base al relativo SID. È possibile generare il SID per un'applicazione in pacchetto passando il nome della famiglia di pacchetti a DeriveAppContainerSidFromAppContainerName.
Annotazioni
Il nome della famiglia di pacchetti è disponibile tramite l'editor del manifesto del pacchetto in Visual Studio durante lo sviluppo, tramite il Centro per i partner per le applicazioni pubblicate tramite Microsoft Store o tramite il comando PowerShell Get-AppxPackage per le applicazioni già installate.
Quando si aprono oggetti denominati creati da un'applicazione in pacchetto, usare il formato <PATH>\<NAME>:
- Sostituire
<PATH>con il percorso dell'oggetto nominato dell'applicazione che lo ha creato. - Sostituire
<NAME>con il nome dell'oggetto.
Annotazioni
Il prefisso dei nomi degli oggetti con <PATH> è obbligatorio solo se un'applicazione in pacchetto ha creato l'oggetto . Gli oggetti denominati creati dalle applicazioni Win32 non devono essere qualificati, anche se l'accesso deve comunque essere concesso quando vengono creati gli oggetti.
Osservazioni:
Gli oggetti denominati nelle applicazioni in pacchetto sono isolati per impostazione predefinita per mantenere la sicurezza e garantire il supporto per gli eventi del ciclo di vita dell'applicazione, ad esempio sospensione e terminazione. La condivisione di oggetti denominati tra applicazioni introduce vincoli di binding e controllo delle versioni rigorosi e richiede che ogni applicazione sia resiliente al ciclo di vita di altri. Per questi motivi, è consigliabile condividere solo oggetti denominati tra applicazioni dello stesso server di pubblicazione.