Aracılığıyla paylaş


Adlandırılmış nesneleri paylaşma

Bu konu başlığı altında, Evrensel Windows Platformu (UWP) uygulamaları ve Win32 uygulamaları arasında adlandırılmış nesnelerin nasıl paylaşılıp paylaştırılamları açıklanmaktadır.

Paketlenmiş uygulamalarda adlandırılmış nesneler

Adlandırılmış nesneler , işlemlerin nesne tanıtıcılarını paylaşması için kolay bir yol sağlar. Bir işlem adlandırılmış bir nesne oluşturduktan sonra, diğer işlemler, uygun işlevi çağırarak nesnenin tanıtıcısını açmak için adını kullanabilir. Adlandırılmış nesneler genellikle iş parçacığı eşitleme veişlemler arası iletişim için kullanılır.

Varsayılan olarak, paketlenmiş uygulamalar yalnızca oluşturdukları adlandırılmış nesnelere erişebilir. Adlandırılmış nesneleri paketlenmiş uygulamalarla paylaşmak için, nesneler oluşturulduğunda izinlerin ayarlanması ve nesneler açıldığında adların nitelenmesi gerekir.

Adlandırılmış nesneler oluşturma

Adlandırılmış nesneler, karşılık gelen bir Create API'siyle oluşturulur:

Bu API'lerin tümü, çağıranın nesneye erişebilecek işlemleri denetlemek için LPSECURITY_ATTRIBUTES belirtmesini sağlayan bir parametreyi paylaşır. Adlandırılmış nesneleri paketlenmiş uygulamalarla paylaşmak için, adlandırılmış nesneler oluşturulduğunda ACL'ler içinde izin verilmelidir.

Güvenlik tanımlayıcıları (SID), ACL'ler içindeki kimlikleri temsil eder. Paketlenmiş her uygulamanın, paket ailesi adına göre kendi SID'leri vardır. Paketlenmiş bir uygulamanın SID'sini oluşturmak için paket ailesi ismini deriveAppContainerSidFromAppContainerNamekullanarak geçirebilirsiniz.

Uyarı

Paket ailesi adı geliştirme sırasında Visual Studio'daki paket bildirimi düzenleyicisi, Microsoft Store aracılığıyla yayımlanan uygulamalar için İş Ortağı Merkezi veya zaten yüklü olan uygulamalar için Get-AppxPackage PowerShell komutu aracılığıyla bulunabilir.

Bu örnek , adlandırılmış bir nesne ACL için gereken temel deseni gösterir. Adlandırılmış nesneleri paketlenmiş uygulamalarla paylaşmak için her uygulama için bir EXPLICIT_ACCESS yapısı oluşturun:

LPSECURITY_ATTRIBUTES çağrılarında Create parametresini paketlenmiş uygulamalar için EXPLICIT_ACCESS kurallarıyla doldurarak, adlandırılmış nesneyi açmak için bu uygulamalara erişim vererek.

Uyarı

Win32 uygulamaları,açar ken nesne adlarını niteledikleri sürece paketlenmiş uygulamalar tarafından oluşturulan tüm adlandırılmış nesnelere erişebilir. Erişim izni verilmesi gerekmez.

Adlandırılmış nesneleri açma

Adlandırılmış nesneler, ilgili Open API'sine bir ad geçirilerek açılır:

Paketlenmiş bir uygulama tarafından oluşturulan adlandırılmış nesneler, uygulamanın ad alanı içinde oluşturulur ve adlandırılmış nesne yolu olarak da bilinir. Paketlenmiş bir uygulama tarafından oluşturulan adlandırılmış nesneleri açarken, nesne adları oluşturma uygulamasının adlandırılmış nesne yolu ile ön eklenmelidir.

getAppContainerNamedObjectPath , SID'sine göre paketlenmiş bir uygulama için adlandırılmış nesne yolunu döndürür. Paketlenmiş bir uygulamanın SID'sini oluşturmak için paket ailesi ismini deriveAppContainerSidFromAppContainerNamekullanarak geçirebilirsiniz.

Uyarı

Paket ailesi adı geliştirme sırasında Visual Studio'daki paket bildirimi düzenleyicisi, Microsoft Store aracılığıyla yayımlanan uygulamalar için İş Ortağı Merkezi veya zaten yüklü olan uygulamalar için Get-AppxPackage PowerShell komutu aracılığıyla bulunabilir.

Paketlenmiş bir uygulama tarafından oluşturulan adlandırılmış nesneleri açarken <PATH>\<NAME>biçimini kullanın:

  • <PATH> yerine uygulamanın adlandırılmış nesne yolunu ekleyin.
  • <NAME> değerini nesne adıyla değiştirin.

Uyarı

Nesne adlarına <PATH> ön eki eklemek, yalnızca nesne bir paketlenmiş uygulama tarafından oluşturulduğunda gereklidir. Win32 uygulamaları tarafından oluşturulan adlandırılmış nesnelerin nitelenmiş olması gerekmez, ancak nesneleroluşturulduğunda erişim verilmelidir.

Açıklamalar

Paketlenmiş uygulamalarda adlandırılmış nesneler, güvenliği korumak ve askıya alma ve sonlandırma gibi uygulama yaşam döngüsü olayları için destek sağlamak için varsayılan olarak yalıtılır. Adlandırılmış nesnelerin uygulamalar arasında paylaşılması sıkı bağlama ve sürüm oluşturma kısıtlamalarına neden olur ve her uygulamanın başkalarının yaşam döngüsüne dayanıklı olmasını gerektirir. Bu nedenlerden dolayı, aynı yayımcıdaki uygulamalar arasında yalnızca adlandırılmış nesneleri paylaşmanızı öneririz.