Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit onderwerp wordt uitgelegd hoe u benoemde objecten kunt delen tussen UWP-toepassingen (Universal Windows Platform) en Win32-toepassingen.
Benoemde objecten in verpakte toepassingen
Benoemde objecten bieden een eenvoudige manier voor processen om objectgrepen te delen. Nadat een proces een benoemd object heeft gemaakt, kunnen andere processen de naam gebruiken om de juiste functie aan te roepen om een ingang voor het object te openen. Benoemde objecten worden vaak gebruikt voor threadsynchronisatie en communicatie tussen processen.
Standaard hebben verpakte toepassingen alleen toegang tot benoemde objecten die ze hebben gemaakt. Als u benoemde objecten wilt delen met verpakte toepassingen, moeten machtigingen worden ingesteld wanneer objecten worden gemaakt en moeten namen worden gekwalificeerd wanneer objecten worden geopend.
Benoemde objecten maken
Benoemde objecten worden gemaakt met een bijbehorende Create
-API:
Al deze API's delen een LPSECURITY_ATTRIBUTES
parameter waarmee de aanroeper toegangsbeheerlijsten (ACL's) kan opgeven om te bepalen welke processen toegang hebben tot het object. Als u benoemde objecten wilt delen met verpakte toepassingen, moet de machtiging worden verleend binnen de ACL's wanneer de benoemde objecten worden gemaakt.
Beveiligings-id's (SID's) vertegenwoordigen identiteiten binnen ACL's. Elke verpakte toepassing heeft een eigen SID op basis van de familienaam van het pakket. U kunt de SID genereren voor een verpakte toepassing door de familienaam van het pakket door te geven aan DeriveAppContainerSidFromAppContainerName.
Opmerking
De familienaam van het pakket vindt u via de manifesteditor van het pakket in Visual Studio tijdens de ontwikkeling, via Partnercentrum voor toepassingen die zijn gepubliceerd via de Microsoft Store of via de Get-AppxPackage PowerShell-opdracht voor toepassingen die al zijn geïnstalleerd.
Dit voorbeeld laat het basispatroon zien dat nodig is om een ACL toe te passen op een benoemd object. Als u benoemde objecten wilt delen met verpakte toepassingen, bouwt u een EXPLICIT_ACCESS structuur voor elke toepassing:
grfAccessMode = GRANT_ACCESS
-
grfAccessPermissions =
passende toestemmingen op basis van het object en het beoogde gebruik- algemene toegangsrechten
- Synchronisatieobjectbeveiliging en -toegangsrechten
- beveiliging en toegangsrechten voor bestandstoewijzing
grfInheritance = NO_INHERITANCE
Trustee.TrusteeForm = TRUSTEE_IS_SID
Trustee.TrusteeType = TRUSTEE_IS_USER
-
Trustee.ptstrName =
De SID verkregen van DeriveAppContainerSidFromAppContainerName
Door de parameter LPSECURITY_ATTRIBUTES
in Create
aanroepen te vullen met EXPLICIT_ACCESS
regels voor verpakte toepassingen, kunt u toegang verlenen tot deze toepassingen om het benoemde object te openen.
Opmerking
Win32-toepassingen hebben toegang tot alle benoemde objecten die zijn gemaakt door verpakte toepassingen zolang ze de objectnamen kwalificeren wanneer ze openen. Ze hoeven geen toegang te krijgen.
Objecten met naam openen
Benoemde objecten worden geopend door een naam door te geven aan een bijbehorende Open
-API:
Benoemde objecten die zijn gemaakt door een verpakte toepassing, worden gemaakt in de naamruimte van de toepassing, ook wel het benoemde objectpad genoemd. Wanneer u benoemde objecten opent die zijn gemaakt door een verpakte toepassing, moeten de objectnamen worden voorafgegaan door het benoemde objectpad waarmee de toepassing is gemaakt.
GetAppContainerNamedObjectPath- retourneert het benoemde objectpad voor een verpakte toepassing op basis van de BIJBEHORENDE SID. U kunt de SID genereren voor een verpakte toepassing door de familienaam van het pakket door te geven aan DeriveAppContainerSidFromAppContainerName.
Opmerking
De familienaam van het pakket vindt u via de manifesteditor van het pakket in Visual Studio tijdens de ontwikkeling, via Partnercentrum voor toepassingen die zijn gepubliceerd via de Microsoft Store of via de Get-AppxPackage PowerShell-opdracht voor toepassingen die al zijn geïnstalleerd.
Wanneer u benoemde objecten opent die zijn gemaakt door een verpakte toepassing, gebruikt u de indeling <PATH>\<NAME>
:
- Vervang
<PATH>
door het benoemde objectpad van de applicatie die het maakt. - Vervang
<NAME>
door de objectnaam.
Opmerking
Het voorvoegsel van objectnamen met <PATH>
is alleen vereist als een verpakte toepassing het object heeft gemaakt. Benoemde objecten die zijn gemaakt door Win32-toepassingen hoeven niet te worden gekwalificeerd, maar toegang moet nog steeds worden verleend wanneer de objecten worden gemaakt.
Opmerkingen
Benoemde objecten in verpakte toepassingen worden standaard geïsoleerd om de beveiliging te behouden en ervoor te zorgen dat ondersteuning wordt geboden voor levenscyclusgebeurtenissen van toepassingen, zoals opschorten en beëindigen. Het delen van benoemde objecten in toepassingen introduceert strikte bindings- en versiebeheerbeperkingen en vereist dat elke toepassing bestand is tegen de levenscyclus van anderen. Daarom is het raadzaam om alleen benoemde objecten te delen tussen toepassingen van dezelfde uitgever.