Uygulama Kullanıcı Modeli Kimlikleri (AppUserModelIDs)
Uygulama Kullanıcı Modeli Kimlikleri (AppUserModelID'ler), Windows 7 ve sonraki sistemlerdeki görev çubuğu tarafından işlemleri, dosyaları ve pencereleri belirli bir uygulamayla ilişkilendirmek için yaygın olarak kullanılır. Bazı durumlarda, sistem tarafından bir işleme atanan iç AppUserModelID'ye güvenmek yeterlidir. Ancak, birden çok işleme sahip olan bir uygulamanın veya konak işleminde çalışan bir uygulamanın, tek bir görev çubuğu düğmesi altında farklı olan pencerelerini gruplandırabilmesi ve uygulamanın Atlama Listesi'nin içeriğini denetleyebilmesi için kendisini açıkça tanımlaması gerekebilir.
- AppUserModelIDs Application-Defined ve System-Defined
- Application-Defined AppUserModelID Oluşturma
- AppUserModelID Atanacağı Yer
- Bir Uygulamayı Konak İşlemi Olarak Kaydetme
- Görev Çubuğu Sabitleme ve Son/Sık Kullanılan Listeler için Dışlama Listeleri
- İlgili konular
AppUserModelIDs Application-Defined ve System-Defined
Bazı uygulamalar açık bir AppUserModelID bildirmez. Bunlar isteğe bağlıdır. Bu durumda sistem, iç AppUserModelID atamak için bir dizi buluşsal yöntem kullanır. Ancak, bu hesaplamalardan kaçınmanın bir performans avantajı vardır ve tam kullanıcı deneyimini garanti etmenin tek yolu açık bir AppUserModelID'dir. Bu nedenle, açık bir kimliğin ayarlanması kesinlikle önerilir. Uygulamalar sistem tarafından atanan AppUserModelID'sini alamıyor.
Bir uygulama açık bir AppUserModelID kullanıyorsa, çalışan tüm pencerelere veya işlemlere, kısayollara ve dosya ilişkilendirmelerine aynı AppUserModelID'yi de ataması gerekir. Ayrıca ICustomDestinationListaracılığıyla atlama listesini özelleştirirken ve SHAddToRecentDocs'e yapılan tüm çağrılarda bu AppUserModelID değerini kullanmalıdır.
Not
Uygulamaların açık bir AppUserModelID'i yoksa,IApplicationDestinations IApplicationDocumentListsve ICustomDestinationList yöntemlerini ve uygulamanın içinden SHAddToRecentDocs çağırmaları gerekir. Bu yöntemler yükleyici veya kaldırıcı gibi başka bir işlemden çağrılırsa sistem doğru AppUserModelID'yi oluşturamaz ve bu çağrıların hiçbir etkisi olmaz.
Aşağıdaki öğeler, açık bir AppUserModelID gerektiren yaygın senaryoları açıklar. Ayrıca birden çok açık AppUserModelID kullanılması gereken durumları da gösterir.
Kullanıcıya ayrı uygulamalar olarak görünen birden çok modu olan bir kullanıcı arabirimine sahip tek bir yürütülebilir dosya, her moda farklı AppUserModelID'ler atamalıdır. Örneğin, kullanıcıların uygulamanın geri kalanından ayrı olarak görev çubuğuna sabitleyip başlatabilecekleri bağımsız bir deneyim olarak gördükleri bir bölümü, ana deneyimden ayrı olarak kendi AppUserModelID'sine sahip olmalıdır.
Kullanıcının aynı uygulama olarak gördüklerine yol açan farklı bağımsız değişkenlere sahip birden çok kısayol, tüm kısayollar için tek bir AppUserModelID kullanmalıdır. Örneğin, Windows Internet Explorer'ın farklı modlar için farklı kısayolları (eklentiler olmadan başlatma gibi) vardır, ancak bunların tümü kullanıcıya tek bir Internet Explorer örneği olarak görünmelidir.
Konak işlemi işlevi gören ve hedef içeriği bir uygulama olarak çalıştıran yürütülebilir dosyanın bir konak uygulaması olarak kaydolması gerekir; bundan sonra barındırdığı algılanan her deneyime farklı AppUserModelID'ler atayabilir. Alternatif olarak, konak işlemi barındırılan programın AppUserModelID'lerini ayarlamasına izin verebilir. Her iki durumda da konak işleminin AppUserModelIDs kaynağının kaydını tutması gerekir( kendisi veya barındırılan uygulama). Bu durumda, hedef içerik olmadan konak işleminin birincil kullanıcı deneyimi yoktur. Örnek olarak Windows Uzak Uygulamalar Yerel Olarak Tümleşik (RAIL) uygulamaları, Java Çalışma Zamanı, RunDLL32.exeveya DLLHost.exeverilebilir.
Mevcut barındırılan uygulamalar söz konusu olduğunda sistem tek tek deneyimleri belirlemeye çalışır, ancak yeni uygulamalar hedeflenen kullanıcı deneyimini garanti etmek için açık AppUserModelID'leri kullanmalıdır.
Kullanıcıya yönelik işbirlikçi veya zincirleme işlemlerin aynı uygulamanın parçası olması için her işleme aynı AppUserModelID uygulanmalıdır. Örnek olarak başlatıcı işlemi olan oyunlar (zincirlenmiş) ve bir işlemde çalışan ilk çalıştırma/kurulum deneyimine ve başka bir işlemde (işbirliğine bağlı) çalışan ana uygulamaya sahip Microsoft Windows Media Player verilebilir.
Windows Gezgini'nde içeriğe gözatmaktan ve içeriği yönetmekten daha fazlası için ayrı bir uygulama işlevi gören bir Shell ad alanı uzantısı, klasör özelliklerinde bir AppUserModelID atamalıdır. Denetim Masası örnek olarak verilmiştir.
Dağıtım çerçevesi gibi bir sanallaştırma ortamında, sanallaştırma ortamının yönettiği her uygulamaya farklı AppUserModelID'ler ataması gerekir. Bu gibi durumlarda, uygulama başlatıcı ortamı ayarlamak için aracı bir işlem kullanır ve ardından uygulamayı çalıştırmak için işlemi farklı bir işleme devreder. Bunun, sistemin çalışan hedef işlemi ara işleme işaret ettiği için kısayolla yeniden ilişkilendirememesine neden olduğunu unutmayın.
Herhangi bir uygulamanın birden çok penceresi, kısayolu veya işlemi varsa, bu uygulamaya atanan AppUserModelID sanallaştırma ortamı tarafından bu parçaların her birine de uygulanmalıdır.
Bu duruma örnek olarak, yönettiği uygulamalar adına AppUserModelID'leri düzgün şekilde atayan ClickOnce çerçevesi örnek olarak verilmiştir. Tüm bu tür ortamlarda olduğu gibi, ClickOnce tarafından dağıtılan ve yönetilen uygulamalar açık AppUserModelID'leri atamamalıdır, çünkü bunu yapmak ClickOnce tarafından atanan AppUserModelID'lerle çakışır ve beklenmeyen sonuçlara yol açar.
Application-Defined AppUserModelID Oluşturma
Bir uygulamanın AppUserModelID değerini aşağıdaki biçimde sağlaması gerekir. En fazla 128 karakter içerebilir ve boşluk içeremez. Her bölüm pascal-cased olmalıdır.
CompanyName.ProductName.SubProduct.VersionInformation
SubProduct
ve VersionInformation
bölümleri isteğe bağlıdır ve uygulamanın gereksinimlerine bağlı olarak CompanyName
ve ProductName
her zaman kullanılmalıdır.
SubProduct
, birkaç alt uygulamadan oluşan bir ana uygulamanın her alt uygulama ve ilişkili pencereleri için ayrı bir görev çubuğu düğmesi sağlamasına olanak tanır.
VersionInformation
, bir uygulamanın iki sürümünün ayrık varlıklar olarak görülürken birlikte var olmasına olanak tanır. Bir uygulamanın bu şekilde kullanılması amaçlanmamışsa, yükseltilmiş bir sürümün değiştirdiği sürümle aynı AppUserModelID'yi kullanabilmesi için VersionInformation
atlanmalıdır.
AppUserModelID Nerede Atanır?
Bir uygulama bir veya daha fazla açık AppUserModelID kullandığında, bu AppUserModelID'leri aşağıdaki konumlarda ve durumlarda uygulamalıdır:
Uygulamanın kısayol dosyasının System.AppUserModel.ID özelliğinde. Kısayol (IShellLink, CLSID_ShellLink veya .lnk dosyası olarak), IPropertyStore ve Kabuk genelinde kullanılan diğer özellik ayarı mekanizmaları aracılığıyla özellikleri destekler. Bu, görev çubuğunun sabitlemek için uygun kısayolu tanımlamasını sağlar ve işleme ait pencerelerin bu görev çubuğu düğmesiyle uygun şekilde ilişkilendirilmesini sağlar.
Not
System.AppUserModel.ID özelliği, kısayol oluşturulduğunda bir kısayola uygulanmalıdır. Uygulamayı yüklemek için Microsoft Windows Installer 'ı (MSI) kullanırken, MsiShortcutProperty tablosu AppUserModelID'nin yükleme sırasında oluşturulduğunda kısayola uygulanmasını sağlar.
Uygulamanın çalışan pencerelerinden herhangi birinin özelliği olarak. Bu, iki yoldan biriyle ayarlanabilir:
- Bir işlemin sahip olduğu farklı pencereler görev çubuğu gruplandırmalarını denetlemek için farklı AppUserModelID'ler gerektiriyorsa, pencerenin özellik depounu almak ve AppUserModelID'yi bir pencere özelliği olarak ayarlamak için SHGetPropertyStoreForWindow)kullanın.
- İşlemdeki tüm pencereler aynı AppUserModelID kullanıyorsa, setCurrentProcessExplicitAppUserModelIDişlemde AppUserModelID değerini ayarlayın. Uygulama herhangi bir kullanıcı arabirimi sunmadan, Atlama Listelerinde herhangi bir düzenleme yapmadan veya SHAddToRecentDocsiçin herhangi bir çağrı yapmadan önce uygulamanın ilk başlatma yordamı sırasında AppUserModelID değerini ayarlamak için SetCurrentProcessExplicitAppUserModelID çağırmalıdır.
Pencere düzeyinde AppUserModelID, işlem düzeyi AppUserModelID'sini geçersiz kılar.
Uygulama pencere düzeyinde açık bir AppUserModelID ayarladığında, uygulama görev çubuğu düğmesi için yeniden başlat komutunun ayrıntılarını sağlayabilir. Bu bilgileri sağlamak için aşağıdaki özellikler kullanılır:
- System.AppUserModel.RelaunchCommand
- System.AppUserModel.RelaunchDisplayNameResource
- System.AppUserModel.RelaunchIconResource
Not
Uygulamayı başlatmak için bir kısayol varsa, uygulamanın yeniden başlatma özelliklerini kullanmak yerine kısayolun özelliği olarak AppUserModelID'yi uygulaması gerekir. Bu durumda, yeniden başlat özellikleriyle aynı bilgileri sağlamak için kısayolun komut satırı, simgesi ve metni kullanılır.
Pencere düzeyinde açık bir AppUserModelID, System.AppUserModel.PreventPinning özelliğini kullanarak sabitleme veya yeniden başlatılmaması gerektiğini belirtebilir.
Özelleştirmek veya güncelleştirmek için bir çağrıda (ICustomDestinationList), uygulamanın Atlama Listesi'ni (IApplicationDocumentLists) alın veya temizleyin (IApplicationDestinations).
Uygulama, sistemin otomatik olarak oluşturulan Son veya sık hedef listelerini dosya ilişkilendirme kaydında (ProgIDaracılığıyla). Bu ilişkilendirme bilgilerine SHAddToRecentDocstarafından başvurulur. Bu bilgiler, ICustomDestinationList::AppendCategoryaracılığıyla özel Atlama Listelerine IShellItem hedefleri eklerken de kullanılır.
Uygulamanın doğrudan SHAddToRecentDocsyaptığı herhangi bir çağrıda. Uygulama, SHAddToRecentDocs adına çağrı yapmak için ortak dosya iletişim kutusuna bağımlıysa, bu çağrılar yalnızca tüm işlem için AppUserModelID ayarlanmışsa, açık AppUserModelID değerini alabilir. Uygulama, işlem yerine kendi pencerelerinde AppUserModelID'leri ayarlarsa, uygulamanın SHAddToRecentDocs'a yönelik tüm çağrıları kendi açık AppUserModelID değeriyle ve ortak dosya iletişim kutusunun kendi çağrılarını yapmasını engellemesi gerekir. Uygulamanın Atlama Listesi'nin En Son veya sık bölümlerinin doğru olduğundan emin olmak için, bir öğe her açıldığında bu işlem yapılmalıdır.
Aşağıdaki öğeler yaygın senaryoları ve bu senaryolarda açık AppUserModelID'lerin nereye uygulanacağını açıklar.
- Tek bir işlem birden çok uygulama içerdiğinde, pencerenin özellik depounu almak ve AppUserModelID değerini pencere özelliği olarak ayarlamak için SHGetPropertyStoreForWindow kullanın.
- Bir uygulama birden çok işlem kullandığında, her işleme AppUserModelID uygulayın. Her işlemde aynı AppUserModelID'yi kullanıp kullanmayacağınız, her işlemin ana uygulamanın bir parçası olarak mı yoksa tek tek varlıklar olarak mı görünmesini istediğinize bağlıdır.
- Belirli pencereleri aynı işlemdeki bir kümeden ayırmak için, pencerenin özellik depounu kullanarak ayırmak istediğiniz pencerelere tek bir AppUserModelID uygulayın ve sonra işleme farklı bir AppUserModelID uygulayın. Bu işlemdeki pencere düzeyi AppUserModelID ile açıkça etiketlenmemiş herhangi bir pencere, işlemin AppUserModelID değerini devralır.
- Bir dosya türü bir uygulamayla ilişkiliyse, dosya türünün ProgID kaydında AppUserModelID değerini atayın. Kullanıcıya farklı uygulamalar olarak görünen farklı modlarda tek bir yürütülebilir dosya başlatılırsa, her mod için ayrı bir AppUserModelID gerekir. Bu durumda, dosya türü için her birinin farklı bir AppUserModelID'sine sahip birden çok ProgID kaydı olması gerekir.
- Kullanıcının bir uygulamayı başlatabileceği birden çok kısayol konumu olduğunda (Başlat menüsünde, masaüstünde veya başka bir yerde), kısayolun özellik deposunu alır ve kısayol özellikleri olarak tüm kısayollara tek bir AppUserModelID uygular.
- Bir uygulama tarafından SHAddToRecentDocsiçin açık bir çağrı yapıldığında, çağrıda AppUserModelID kullanın. Dosyaları açmak veya kaydetmek için ortak dosya iletişim kutusu kullanıldığında, SHAddToRecentDocs, uygulama adına iletişim kutusu tarafından çağrılır. Bu çağrı, işlemden açık AppUserModelID çıkarabilirsiniz. Ancak, pencere özelliği olarak açık bir AppUserModelID uygulanırsa, ortak dosya iletişim kutusu doğru AppUserModelID'yi belirleyemez. Bu durumda, uygulamanın SHAddToRecentDocs açıkça çağırması ve doğru AppUserModelID değerini sağlaması gerekir. Ayrıca, uygulamanın IFileOpenDialogveya IFileSaveDialogGetOptions yönteminde FOS_DONTADDTORECENT bayrağını ayarlayarak SHAddToRecentDocs çağırmasını engellemesi gerekir.
Uygulamayı Konak İşlemi Olarak Kaydetme
Bir uygulama, bu yürütülebilir dosyanın işleminin görev çubuğu tarafından bir konak işlemi olarak kabul edilmesine neden olmak için IsHostApp kayıt defteri girdisini ayarlayabilir. Bu, gruplandırma ve varsayılan Atlama Listesi girdilerini etkiler.
Aşağıdaki örnekte gerekli kayıt defteri girdisi gösterilmektedir. Girdiye bir değer atanmadığını unutmayın; tek gereken varlığıdır. Bu REG_NULL bir değerdir.
HKEY_CLASSES_ROOT
Applications
example.exe
IsHostApp
İşlemi başlatmak için kullanılan işlemin kendisi veya kısayol dosyasında açık bir AppUserModelID varsa, konak işlem listesi yoksayılır ve uygulama görev çubuğu tarafından normal bir uygulama olarak değerlendirilir. Uygulamanın çalışan pencereleri tek bir görev çubuğu düğmesi altında birlikte gruplandırılır ve uygulama görev çubuğuna sabitlenebilir.
Açık bir AppUserModelID olmadan yalnızca çalışan işlemin yürütülebilir adı biliniyorsa ve bu yürütülebilir dosya konak işlem listesindeyse, işlemin her örneği görev çubuğu gruplandırma için ayrı bir varlık olarak değerlendirilir. İşlemin belirli bir örneğiyle ilişkilendirilmiş görev çubuğu düğmesi, işlemin yeni bir örneği için sabitleme/kaldırma seçeneğini veya başlatma simgesini görüntülemez. İşlem, Başlangıç menüsünün En Sık Kullanılan (MFU) listesine de dahil edilmeye uygun değildir. Ancak, işlem başlatma bağımsız değişkenlerini içeren bir kısayol aracılığıyla başlatıldıysa (genellikle "uygulama" olarak barındırılacak hedef içerik), sistem kimliği belirleyebilir ve uygulama sabitlenebilir ve yeniden başlatılabilir.
Görev Çubuğu Sabitleme ve Son/Sık Kullanılan Listeler için Dışlama Listeleri
Uygulamalar, işlemler ve pencereler, görev çubuğuna sabitlemek veya Başlat menüsünün MFU listesine eklemek için kendilerini kullanılamaz hale getirmeyi seçebilir. Bunu gerçekleştirmek için üç mekanizma vardır:
NoStartPage girdisini burada gösterildiği gibi uygulamanın kaydına ekleyin:
HKEY_CLASSES_ROOT Applications Example.exe NoStartPage
NoStartPage girdisiyle ilişkili veriler yoksayılır. Yalnızca girdinin varlığı gereklidir. Bu nedenle, NoStartPage için ideal tür REG_NONE.
Açık bir AppUserModelID kullanımının NoStartPage girdisini geçersiz kıldığını unutmayın. Bir kısayola, işleme veya pencereye açık bir AppUserModelID uygulanırsa, sabitlenebilir hale gelir ve Başlat menüsü MFU listesi için uygun hale gelir.
Windows ve kısayollarda System.AppUserModel.PreventPinning özelliğini ayarlayın. Bu özellik, PKEY_AppUserModel_ID özelliğinden önce bir pencerede ayarlanmalıdır.
Aşağıda gösterildiği gibi, aşağıdaki kayıt defteri alt anahtarına değer olarak açık bir AppUserModelID ekleyin:
HKEY_LOCAL_MACHINE Software Microsoft Windows CurrentVersion Explorer FileAssociation NoStartPageAppUserModelIDs AppUserModelID1 AppUserModelID2 AppUserModelID3
Her girdi, AppUserModelID adlı bir REG_NULL değeridir. Bu listede bulunan herhangi bir AppUserModelID sabitlenebilir değildir ve Başlangıç menüsü MFU listesine dahil edilmeye uygun değildir.
Belirli yürütülebilir dosyaların yanı sıra kendi adlarında belirli dizeleri içeren kısayolların otomatik olarak MFU listesine sabitleme ve ekleme dışında tutulduğunu unutmayın.
Not
Bu otomatik dışlama, açık bir AppUserModelID uygulanarak geçersiz kılınabilir.
Aşağıdaki dizelerden herhangi biri, büyük/küçük harfe bakılmaksızın kısayol adına eklenirse, program sabitlenemez ve en sık kullanılan listede görüntülenmez (Windows 10 için geçerli değildir):
- Belge
- Yardım
- Yüklemek
- Daha Fazla Bilgi
- Beni oku
- Önce Oku
- Benioku
- Kaldırmak
- Kurulum
- Destek
- Yenilikler
Aşağıdaki program listesi sabitlenemez ve en sık kullanılanlar listesinden çıkarılır.
- Applaunch.exe
- Control.exe
- Dfsvc.exe
- Dllhost.exe
- Guestmodemsg.exe
- Hh.exe
- Install.exe
- Isuninst.exe
- Lnkstub.exe
- Mmc.exe
- Mshta.exe
- Msiexec.exe
- Msoobe.exe
- Rundll32.exe
- Setup.exe
- St5unst.exe
- Unwise.exe
- Unwise32.exe
- Werfault.exe
- Winhlp32.exe
- Wlrmdr.exe
- Wuapp.exe
Yukarıdaki listeler aşağıdaki kayıt defteri değerlerinde depolanır.
Not
Bu listeler uygulamalar tarafından değiştirilmemelidir. Aynı deneyim için daha önce listelenen dışlama listesi yöntemlerinden birini kullanın.
HKEY_LOCAL_MACHINE
Software
Microsoft
Windows
CurrentVersion
Explorer
FileAssociation
AddRemoveApps
HostApps
İlgili konular