Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Giriş
Uzak Masaüstü eklentisi nedir?
Uzak Masaüstü eklentisi, genellikle üçüncü taraf uygulamalarda Microsoft Uzak Masaüstü (RDP) istemcilerinin işlevselliğini geliştiren bir uzantı veya eklentidir. Örneğin, sanallaştırılmış ortamlarda çalışırken Teams'in performansını iyileştirmek için tasarlanmış Teams VDI Eklentisi . Windows 365 Link için bu eklentilerin bu belgede ayrıntılı olarak yer alan yeni bir mimariyle uyumlu olması gerekir. Bağlantı ile çalışmak için Uzak Masaüstü eklentisine ihtiyaç duyan bir ISV'yi temsil ediyorsanız lütfen bu formu doldurun ve gönderin.
Bu özellik genel önizleme aşamasındadır.
İşlem dışı Uzak Masaüstü Eklentisi nedir?
Geleneksel RDP eklentileri RDP istemcisiyle aynı işleme yüklenir. Aşağıdaki diyagramda görüldüğü gibi, RDPClientProcess.exe farklı RDP eklenti dll'lerini yükler. Yükleme tamamlandıktan sonra eklenti öğesinin RDPClientProcess.exebir parçası olur.
İşlem dışı modelde,
- RDP istemci işlemi RDP eklentilerini işlem dışı, yani RDP istemcisinden bağımsız bir işlem olarak yükler ve
- AppContainers kullanarak işlem yalıtımını zorunlu kılarak eklentinin daha geniş Windows işletim sistemine erişimini sınırlayın.
İşlem dışı eklenti yükleme mimarisi
Aşağıdaki diyagramda, RDP istemcilerinin işlem dışı modeldeki RDP eklentileriyle nasıl etkileşime geçtiğini gösteren üst düzey bir açıklama gösterilmektedir.
- RDP eklentileri COM sunucuları ve RDP istemcileri COM istemcileri olarak düşünülebilir.
- RDP eklentileri artık Uygulama Yalıtımı'nda çalışan bağımsız işlemlerdir. RDPClientProcess.exe, COM'un CoCreateInstance API'sini kullanarak eklentileri yükler.
- RDP eklentisi yazarlarının dll'lerde bulunan temel iş mantığını değiştirmesi gerekmez. Eklentiyi bir MSIX olarak paketlemeleri yeterlidir. Bu nedenle, eklenti yazarlarının RDP eklenti kodunda en az değişiklik yapması gerekir.
Uygulama ayrıntıları
Eklentiler bir RDP bağlantısında kullanıldığında üç taraf söz konusu olur.
- RDP istemcisi (örneğin, Windows App).
- RDP eklentisi.
- Eklentinin yazıldığı uygulama (örneğin, Teams uygulaması).
Örneğin, bir kullanıcı bir sanal masaüstüne bağlanmak için Azure Sanal masaüstü'nü ve sanal masaüstünde çalışan Teams uygulamasını kullandığında bir durumu göz önünde bulundurun. Burada Azure Sanal Masaüstü RDP istemcisi (istemci uygulaması), Teams VDI eklentisi RDP eklentisi ve Teams ise sanal masaüstünde çalışan uzak uygulama sunucu uygulamasıdır.
Burada eksiksiz bir çalışma örneği verilmiştir. Bu örnekte örnek bir RDP istemcisi, RDP eklentisi ve uzak sanal makinede çalışan örnek bir uygulama kullanarak uygulama ayrıntılarına geçeceğiz.
Eklenti yazarlarının ne yapması gerekir?
Tüm RDP eklentileri COM iletişimleri aracılığıyla çalışır. RDP eklentisi COM sunucusudur ve RDP istemcisi COM istemcisidir (Daha fazla bilgi için bkz. COM istemcileri ve COM sunucuları). Hem COM istemcisi (RDP istemcisi) hem de COM sunucusu (RDP Eklentisi) istemci makinesindedir. Eklenti yazarlarının tamamlaması gereken iki ana görev vardır:
- tsvirtualchannels belgelerinde bildirilen arabirimlerin işlevlerini tanımlayın. Eklenti yazarlarının her işlevi tanımlaması değil, yalnızca kullanımda olanları tanımlaması gerekir.
- RDP eklentisini MSIX olarak paketle/dağıt. Şu anda UYGULAMA Yalıtımı, COM ve Paket Kimliği'ni destekleyen uygulamaları paketlemenin tek yolu MSIX'tir. Uygulamayı paketlerken dikkate alınması gereken bazı önemli ayrıntılar vardır. Bu ayrıntılar burada bir örnek kullanılarak ele alınmaktadır.
RDP istemcilerinin ne yapması gerekir?
Yüksek düzeyde, RDP istemcisinin sorumluluğundadır
- RDP eklentilerini bulun ve belleğe yükleyin.
- gibi
IWTSWindowInfoServiceistemci tarafı arabirimleri uygulayın.
RDP istemci işlemi başlatıldıktan sonra, şu koda sahip olmalıdır:
- eklentilerini kullanarak
AppExtensionCatalog::Open("com.microsoft.rdp.plugin.wtsplugin")keşfedin. Daha fazla bilgi için uygulama uzantıları belgelerine bakın. - Bulunan eklentilerin COM sınıf kimliğini alın.
-
CoCreateInstance kullanarak eklenti fabrikasının COM nesnesini oluşturun Eklenti fabrikasını
CreatePluginAPIkullanarak gerçek eklentiyi oluşturun (RDP eklentisinin kendisinde tanımlanır).
RDP sunucusu uygulamasının veri göndermek/almak için ne yapması gerekir?
Sunucu uygulaması WTSVirtualChannelOpenEx API'sini kullanarak bayrağını geçirerek WTS_CHANNEL_OPTION_DYNAMIC istemci makinesinde çalışan RDP eklentisine dinamik bir sanal kanal açabilir. Bu API, RDP istemcisi ile sunucu uygulaması arasında çift yönlü bir kanal açar.
Ardından WTSVirtualChannelWrite API'sini kullanarak sanal kanala veri yazabilir ve WTSVirtualChannelRead API'sini kullanarak kanaldan benzer şekilde veri okuyabilir. Bu dinamik sanal kanalı açmanın önkoşulları şunlardır:
- RDP istemcisi ile sunucu arasında bir RDP bağlantısı bulunmalıdır
- RDP eklentisi istemci makineye zaten yüklenmiş olmalıdır
Kullanılan/bilinmesi iyi olan teknolojiler
RDP eklentilerini işlem dışı bir şekilde oluşturmak ve kullanmak çeşitli teknolojilerin bilinmesini gerektirdiğinden, gerçek RDP eklentisi geliştirme ve kullanımına devam etmeden önce bunları temel olarak anlamak daha iyidir.
MSIX
MSIX, Microsoft tarafından geleneksel EXE, MSI ve AppX yükleyicilerinin yerini almak için sunulan modern bir Windows uygulaması paketleme biçimidir.
AppContainer
Çalışan uygulamayı sistemin geri kalanından yalıtarak kaynaklara, hassas verilere ve diğer işlemlere yetkisiz erişimi engelleyen çalışma zamanı güvenlik korumalı alanı.
Paket Kimliği
AppContainer uygulamasına atanan ve Windows'un güvenlik ilkelerini, kaynak erişim denetimlerini ve uygulama yalıtımını zorunlu kılmasını sağlayan benzersiz bir tanımlayıcı. Windows kapsayıcı teknolojisi, hangi uygulamanın hangi kaynak erişimine sahip olduğunu belirlemek için birincil anahtar olarak bu kimliği kullanır.
Uygulama Yalıtımı
- AppContainers + kolay geliştirme sağlayan araçlar. Windows, uygulama özelliklerini koda bakarak el ile bulmak yerine otomatik olarak bildiren Uygulama Yeteneği Profil Oluşturucu gibi araçlar sağlar.
- Uygulama yazarlarının sorunsuz birlikte çalışma sağlayan diğer uygulamalar tarafından kullanılacak COM sınıflarını bildirmesine olanak tanıyan uygulama içinde COM özellikleri sağlar.
Uygulama Uzantıları
Uygulama Uzantısı, geliştiricilerin mevcut bir uygulamanın işlevlerini genişletmesine olanak tanıyan eklentilere benzer.
Bileşen Nesne Modeli
Uygulamalar, işlevselliğin "nasıl"larını kullanıma sunmadan arabirimleri platformdan bağımsız bir şekilde kullanıma açabilir. RDP eklentileri, arabirimleri kullanıma sunarak bu modeli kullanarak RDP istemcisiyle etkileşim kurar.
RDP kanalı
RDP kanalı, RDP eklentisi ile RDP sunucusu (Uzak Masaüstü Hizmetleri Ana Bilgisayarı gibi) arasında mantıksal bir iletişim akışıdır. Özel verilerin ekran, klavye veya fare verilerinden ayrı olarak normal RDP oturumuyla birlikte ileri geri gönderilmesine olanak tanır.
Dinamik Sanal Kanallar
Statik (geleneksel) Sanal Kanallar, ana RDP veri bağlantısı üzerinden istemci ve sunucu bileşenleri arasında kayıpsız iletişim sağlar. Dinamik Sanal Kanallar geliştirilmiş bir sürümdür, ancak temel işlevler aynıdır.
Hızlı Çalıştırma
COM Hızlı Çalıştırma, COM sunucu kaydında (burada arama COMGLB_FAST_RUNDOWN yapın) Windows'a işlem dışı bir COM sunucusunun ömrünü nasıl işleyeceklerini bildiren bir ayardır. Özellikle, COM çalışma zamanının, başka istemci bağlı olmadığında sunucuyu agresif bir şekilde sonlandırmasına izin vererek COM kapatma davranışını hızlandırabilir. Yine de 10 saniye kadar sürebilir.
Marshalling/unmarshalling
FARKLı işlemler gibi adres alanları arasında COM istemcisi ile COM sunucusu arasında işlem dışı iletişim sırasında veri/COM nesnelerini aktarmak için kullanılan bir mekanizma.