Megosztás a következőn keresztül:


Elnevezett objektumok megosztása

Ez a témakör bemutatja, hogyan oszthat meg elnevezett objektumokat univerzális Windows-platform (UWP) alkalmazások és Win32-alkalmazások között.

Elnevezett objektumok a csomagolt alkalmazásokban

Az elnevezett objektumok megkönnyítik a folyamatok számára az objektumfogópontok megosztását. Miután egy folyamat létrehozott egy elnevezett objektumot, más folyamatok a nevet használva meghívhatják a megfelelő függvényt egy leíró megnyitásához az objektum számára. A névvel ellátott objektumokat gyakran használják a szálszinkronizáláshoz és a folyamatközi kommunikációhoz.

Alapértelmezés szerint a csomagolt alkalmazások csak az általuk létrehozott elnevezett objektumokhoz férhetnek hozzá. Az elnevezett objektumok csomagolt alkalmazásokkal való megosztásához engedélyeket kell beállítani az objektumok létrehozásakor, és az objektumok megnyitásakor a neveket minősíteni kell.

Elnevezett objektumok létrehozása

Az elnevezett objektumok egy megfelelő Create API-val jönnek létre:

Ezek az API-k egy olyan paramétert LPSECURITY_ATTRIBUTES osztanak meg, amely lehetővé teszi a hívó számára , hogy hozzáférés-vezérlési listákat (ACL-eket) adjon meg, amelyekkel szabályozható, hogy mely folyamatok férhetnek hozzá az objektumhoz. Ahhoz, hogy az elnevezett objektumokat csomagolt alkalmazásokkal lehessen megosztani, engedélyt kell adni az ACL-ben a névvel ellátott objektumok létrehozásakor.

A biztonsági azonosítók (SID-k) az ACL-ek identitásait jelölik. Minden csomagolt alkalmazás saját BIZTONSÁGI azonosítóval rendelkezik a csomagcsalád neve alapján. A csomagolt alkalmazások biztonsági azonosítóját úgy hozhatja létre, hogy átadja a csomagcsalád nevét a DeriveAppContainerSidFromAppContainerName névnek.

Megjegyzés:

A csomagcsalád neve a Visual Studio csomagjegyzék-szerkesztőjében található a fejlesztési idő alatt, a Microsoft Store-ban közzétett alkalmazások partnerközpontjában vagy a Get-AppxPackage PowerShell parancson keresztül a már telepített alkalmazásokhoz.

Ez a minta bemutatja a névvel ellátott objektum ACL-hez szükséges alapvető mintát. Ha elnevezett objektumokat szeretne megosztani csomagolt alkalmazásokkal, hozzon létre egy EXPLICIT_ACCESS struktúrát az egyes alkalmazásokhoz:

A LPSECURITY_ATTRIBUTES paraméter Create hívásokban EXPLICIT_ACCESS csomagolt alkalmazásokra vonatkozó szabályokkal való feltöltésével hozzáférést biztosíthat ezeknek az alkalmazásoknak a nevesített objektum megnyitásához.

Megjegyzés:

A Win32-alkalmazások hozzáférhetnek a csomagolt alkalmazások által létrehozott összes elnevezett objektumhoz, amennyiben azok megnyitásakor megfelelnek az objektumneveknek. Nem kell hozzáférést biztosítani számukra.

Elnevezett objektumok megnyitása

Az elnevezett objektumok úgy nyílnak meg, hogy egy nevet adnak át egy megfelelő Open API-nak:

A csomagolt alkalmazás által létrehozott elnevezett objektumok az alkalmazás névterében, más néven a nevesített objektum elérési útján jönnek létre. Amikor egy csomagolt alkalmazás által létrehozott elnevezett objektumokat nyitunk meg, az objektumneveket az alkalmazás elnevezett objektumelérési útjának előtagként kell használni.

A GetAppContainerNamedObjectPath egy csomagolt alkalmazás elnevezett objektumútvonalát adja vissza a SID alapján. A csomagolt alkalmazások biztonsági azonosítóját úgy hozhatja létre, hogy átadja a csomagcsalád nevét a DeriveAppContainerSidFromAppContainerName névnek.

Megjegyzés:

A csomagcsalád neve a Visual Studio csomagjegyzék-szerkesztőjében található a fejlesztési idő alatt, a Microsoft Store-ban közzétett alkalmazások partnerközpontjában vagy a Get-AppxPackage PowerShell parancson keresztül a már telepített alkalmazásokhoz.

Egy csomagolt alkalmazás által létrehozott elnevezett objektumok megnyitásakor használja a <PATH>\<NAME>formátumot:

  • Cserélje le <PATH> az alkalmazás megnevezett objektum útvonalára.
  • Cserélje le <NAME> az objektum nevére.

Megjegyzés:

Az objektumnevek <PATH> előtagolására csak akkor van szükség, ha egy csomagolt alkalmazás hozta létre az objektumot. A Win32-alkalmazások által létrehozott elnevezett objektumokat nem kell minősíteni, de az objektumok létrehozásakor a hozzáférést továbbra is biztosítani kell.

Megjegyzések

A csomagolt alkalmazások nevesített objektumai alapértelmezés szerint elkülönítve vannak, hogy megőrizzék a biztonságot, és támogatást biztosítsanak az alkalmazás életciklus-eseményeihez, például a felfüggesztéshez és a leállításhoz. Az elnevezett objektumok alkalmazások közötti megosztása szigorú kötési és verziószámozási korlátozásokat vezet be, és megköveteli, hogy minden alkalmazás rugalmas legyen mások életciklusával szemben. Ezért javasoljuk, hogy csak az azonos közzétevőtől származó alkalmazások között ossza meg az elnevezett objektumokat.