Makale numarası: 169321 - Son Gözden Geçirme: 11 Temmuz 2005 Pazartesi - Gözden geçirme: 2.5 BILGI: COM sunucularını etkinleştirme ve NT Windows istasyonlar
Bu SayfadaÖzetBir sınıf nesnesi kayıtlı bir sınıf için bir istemci istediğinde COM varolan bir sınıf nesnesi döndürür veya istenen sınıf nesnesi içeren olarak kaydedilen bir işlem başlatır. (Olup olmadığı, işlemi oluşturma veya "Başlatılıyor") bir istekte bulunan istemci için bir <a0>sınıf</a0> nesnesi başvurusu elde etme işlemi "etkinleştirme" olarak adlandırılır Varolan bir sınıf nesnesi çalıştıran ve birden çok kullanım kayıtlı bile belirli koşullar altında yeni bir sunucu işlemi COM fırlatma. Yeni bir işlem COM oluşturduğunda, ayrıca, bu işleme "pencere istasyonu" bilinen yeni bir güvenlik ortamında etkileşimli pencere istasyonu gibi varolan bir pencere istasyonu paylaşımı yerine başlatılması. (Pencere istasyonları üzerinde daha fazla bilgi için Win32 SDK belgelerine bu tümceciği arayın.) Yeni işlemler ve pencere istasyonu sırasında bir etkinleştirme isteği oluşturmak için COM'ın algoritmaları anlama çeşitli nedenlerle önemlidir. Ilk olarak, COM güvenlik sorunları nedeniyle bir çoklu kullanım sınıf nesnesi birden fazla işlem örneğini oluşturabilir. Ikinci olarak, "tek kullanımlı" sunucuları ayrı işlemler her zaman başlatılır, ancak olabilir veya ayrı pencere istasyonu başlattı. Bu fark, iki COM sunucusu pencere iletilerini veya güvenli iletişim özelliklerini COM veya RPC üzerinden iletişim kurmaya çalıştığınızda gibi bazı olağandışı durumlarda uygulama kodu için kendisini listesi. Aynı anda Windows NT'DE oluşturulan pencere istasyonları sayısı sınırlı olduğundan, üçüncü, COM sunucu yeni bir pencere istasyonu aldığında bilmek önemlidir. Bu makalede, başka bir etkinleştirme senaryolarını inceler ve yeni işlem ve pencere istasyonu oluşturulan açıklar. Daha fazla bilgiCOM sunucu yeni bir işlem oluşturur veya yeni bir sunucu işlemi için yeni bir pencere istasyonu atar, birkaç etkene bağlıdır:
Birden çok kullan sınıfları(CoRegisterClassObject() API) üzerinden REGCLS_MULTIPLEUSE bayrağın belirtilmesi COM ile kayıtlı bir sınıfın birden çok kullanım sınıftır. Bu tür bir sınıfı için COM sunucu işlemi aynı örneğini normalde tüm istemci etkinleştirme isteklerini kullanır. Bununla birlikte, başlatan kullanıcı) ve diğer birkaç durumda güvenlik altında çalışacak şekilde yapılandırılmadığında, sınıflar için COM sunucu işleminin hizmet etkinleştirme isteklerini yeni bir örneğini başlatır. Böylece yeni bir sunucu işlemi örneği başlatıldığında, sunucu işlemi, aynı zamanda yeni bir pencere istasyonu alır olanaklıdır. Aşağıdaki çeşitli senaryolarda inceleyeceğiz, ancak önce size kısaca neden COM sınıf nesnesi örneği, "birden çok kullanım" sınıf olarak zaten kaydettirilmiş, istenen sınıfı nesneleri içeren yeni bir işlem başlatır. tartışılacaktır.Bir COM sınıfı, ilk (daha doğru bir şekilde, bir Appıd bir COM sınıfıyla ilişkilendirilmiş) kayıtlı "başlatan kullanıcı" çalıştırılması sistemi ile belirli bir güvenlik ilkesi sınıfı göre sistem yöneticiniz ayarladı. Bir sınıf nesnesi activating kodu aynı güvenlik bağlamında çalışan bir işlem içinde bir activator alması gereken ilkedir. Bu güvenlik ilkesi, yalnızca bir sınıf factory nesnesi için tüm etkinleştirme isteklerini (REGCLS_MULTIPLEUSE tarafından belirtildiği gibi), sunucu tarafından tanımlanan davranışı çakışma içine gelebilir. COM güvenlik ilkesini uygulama davranışı üzerinde prioritizes. Sonuç olarak, birden çok kullanım sunucuları "başlatan kullanıcı" çalışmak üzere kaydı çok kullanımı normal kurallarına göre davranır değil. Yeni BIR işlem için activating her güvenlik sorumlusu olarak başlatılır. Ikincisi, belirtilen CLSID belirtilmiş olandan farklı bir güvenlik bağlamında çalışan bir COM tarafından başlatılan bir işlem bu CLSID kaydederse, fail(CoRegisterClassObject will return an error code CO_E_WRONG_SERVER_IDENTITY in this case) bu kaydı olur. Ayrıca, bir etkinleştirme isteği daha sonra geldiğinde, yeni bir işlem tarafından COM CLSıD/Appıd için belirtilen güvenlik içeriği ile başlatılır. COM CoRegisterClassObject() (güvenli olmayan bir işlem) çağrılıyor kod güven başlatamıyor, (kayıt defterini güvenli veritabanıdır) kayıt defteri ayarı yalnızca hangi sınıf nesnesine kullanın ve nasıl çalıştırılacağını saptamak için güvenebileceğinizi. Bu davranış, yetkisiz kullanıcıların sınıf nesnelerinin kaçak makineye özel Sızdırma engeller. Ile unutmayın, biz şimdi COM tarafından kullanımı birden çok sunucu başlatıldığında, yeni işlemleri ve pencere istasyonu oluşturulurken sorun dönün LUID istemcisinin kullanımı çok sınıf durumda herhangi bir şekilde önemli değildir dikkat edin.
Tek kullan sınıflarıNot: Tek kullan sınıfları mümkün olduğunca kaçınılmalıdır. Tek kullanımlı kayıt, eski bir ayardır ve eski COM uygulamaları desteklemek üzere ve eski COM-COM uygulamaları taşıma kolaylaştırmak için tasarlanmıştır Yeni sınıflar kullanımı çok sınıf nesnesi kaydı desteklemek için tasarlanmış olması önerilir. Bu tek kullanım sınıfları tam karşısındaki multi-use sınıfları etkisini neden özellikle "Bu kullanıcı" kimliğine sahip sunucular söz konusu olduğunda, geçerlidir. Yeni bir sunucu işlemi ve yeni pencere istasyonu etkinleştirme başına oluşturdukları ve biz altındaki tartışma gibi bu kaynağın Windows NT altında sorunlara yol açabilir.Bir tek kullanımı ile COM REGCLS_SINGLEUSE bayrağı belirleme (CoRegisterClassObject() API) üzerinden kaydedilen bir sınıftır. Bu tür bir sınıfı için COM her zaman yeni bir sunucu işlemi her etkinleştirme isteği sınıfın örneğini herhangi bir istemciden (yerel veya uzak) başlatılır. Bu makale, kalan soru amaçlıdır: sunucu aynı zamanda yeni bir pencere istasyonu olduğunda alırsınız?
Summarizing senaryoları tablo---------------------------------------------------------------------------
| Multiple-Use Server
| (class factory has requested reuse)
| Activation Modes
|-------------------------------------------------------------------
| Interactive | As "This |As "Launching | Win32
Client | User | User" | user" | service
Local | Process launched | Process | Process | Service
| in the | launched in a | launched client | started on
| interactive window| new window | window station | first
| station on first | station on | on first | activation
| activation | first | request, | request
| request, | activation | subsequent | (new winsta
| subsequent | request, | requests from | or system/
| requests get | subsequent | the same SID/ | interactive
| existing class | requests get | window station | winsta
| object, | existing class | get existing | depending
| activations fail | object | class object, no| on service
| if no user logged | | sharing of class| config),
| on locally | | objects across | subsequent
| | | window stations | requests
| | | even if same SID| get
-------| | |-----------------| existing
Remote | | | Process launched| class
| | | in new winsta on| objects
| | | first activation|
| | | request by a |
| | | SID, subsequent |
| | | remote requests |
| | | by the same SID |
| | | get existing |
| | | class object; |
| | | class launched |
| | | by local user |
| | | reused by remote|
| | | callers with |
| | | same SID |
---------------------------------------------------------------------------
| Single-Use Server
| (new process created for each activation request)
| Activation Modes
|-------------------------------------------------------------------
| Interactive | As "This |As "Launching | Win32
Client | User | User" | user" | service
Local | Process always | Process always | Process always | N/A(only
| launched in the | launched in a | launched in | one
| interactive | new window | the window | activation
| window station, | station | station of | possible)
| if no interactive | | client process |
| window station | | |
| activation fails | | |
-------| | |-----------------|
Remote | | | if both SID and |
| | | LUID of the |
| | | client match |
| | | previous client |
| | | activation, |
| | | process launched|
| | | in existing |
| | | window station, |
| | | otherwise in new|
| | | windowstation |
Pencere istasyonları ve Windows NT kaynaklarıBu bölümde etkileri, COM sunucunuzun yapılandırmasını etkileyen nasıl <a0>Windows NT ve</a0> altında yeni pencere istasyonu oluşturmanın inceleyeceğiz. Bir randevu oldu?unu görecektir gibi Windows NT bir makinede oluşturulabilecek pencere istasyonları sayısının bir sınırı yoktur. Windows NT, bu sınır aşıldığında, COM tarafından yeni bir sunucu işlemi örneği için başlatma girişiminde başarısız olacaktır. Genellikle, aşağıdakine benzer bir hata iletisi görüntülenir:Devingen bağlantı kitaplığını başlatma d:\WINNT\system32\kernel32.dll başarısız oldu. Işlem anormal olarak sona eriyor. UYARı: Kayıt Defteri Düzenleyicisi'ni yanlış kullanmak, bunları gidermek için Windows NT yeniden yüklemenizi gerektirebilecek ciddi, sistem çapında sorunlara yol açabilir. Microsoft, Kayıt Defteri Düzenleyicisi kullanımından doğacak tüm sorunların çözülebileceğini garanti etmemektedir. Bu araç'ni kullanmak kendi sorumluluà ° unuzdadýr. Adlandırılmış değer düzenlemeniz gerekebilir aşağıdaki anahtarı altında görünür: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems Not: BIR pencere istasyonu, birden çok masaüstlerine içerebilir. Yukarıdaki pencere istasyonu yerel istemci işleminin nerede açıklanan "Kullanıcı başlatılıyor" sunucuları tartışmada, "Masaüstü ve pencere istasyonu" için kısa form olarak düşünülmelidir. "Kullanıcı başlatılıyor" ayarı, gerçekten tanımayan eski olmayan-DCOM sunucuları için tasarlanmıştır ve seyrek olarak kullanılmalıdır. Eski bu sunucular, kendi masaüstlerine çalıştırmak bekler. Bu nedenle, "Kullanıcı başlatılıyor" MULTIPLEUSE için sunucuları, her bir istemci işlemi aynı pencere istasyonunun içinde farklı bir masaüstü, pencere istasyonu/Masaüstü başlatılması yeni bir sunucu işlemi neden olur. "Kullanıcı başlatılıyor" SINGLEUSE için sunucuları, sunucu, windows istasyonu/masaüstünün istemci işlemi devralır. Windows NT 4.0 Service Pack 4.0 içinde COM pencere istasyonu yeniden dener. Bunun için önce bir sunucu, belirli bir kullanıcı için RunAs ayarlanırsa ve bir sunucu işlemi birden çok örneği başlatılan, her işlemi kendi pencere istasyonu alırsınız. Yukarıdaki sınırlamalar açıklayan pencere istasyonu için müşteri adayı. SP4'te, COM aynı pencere istasyonu, aynı kullanıcı kimliği (veya simgesi altında) çalıştırmak için ayarlanmış olan tüm RunAs (yani, "Activator olarak etkinleştir" veya "Kullanıcı başlatılıyor") sunucuları oluşturmaya çalışır. Bu durum, bu durumlarda, birden çok sunucu işlemi aynı belirteciyle çalıştırdığı masaüstü yığını boyutu ayarlama gereğini ortadan kaldırır. Yapılandırmanızda, tüm sunucular için RunAs aynı kullanıcı ya da Çalıştır RunAs sunucu işlemi birden çok örneğini ayarlanmışsa, daha sonra makalede önerilen Masaüstü heapsize azaltır değil. Bu, bu varsayılan değeri (3 M) Bu durumda bırakmanız önerilir. Bu, çünkü masaüstü yığını azaltmak, sistemi daha fazla pencere istasyonu/Masaüstleri sonra oluşturabilirsiniz; ancak, bir pencere istasyonu/Masaüstü çalışan işlemlerin sayısı giderek daha küçük olur. Farklı simgeleri çalışan birden çok sunucu varsa diğer taraftan, yapılandırmanızda, daha sonra pencere istasyonu kısıtlamaları yüz. Bu durumda, masaüstü yığın boyutunu azaltmak için bu makaledeki önerilerin başvurmalıdır. ReferanslarBu makaledeki bilginin uygulandığı durum:
Otomatik TercümeÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir. Makalenin İngilizcesi aşağıdaki gibidir:169321
(http://support.microsoft.com/kb/169321/en-us/
)
| Diğer Kaynaklar Diğer Destek Siteleri
ToplulukMakale çevirileri |






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


Üste