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.
Filtre işleyicinizin kayıtlı olması gerekir. Ayrıca, kayıt defteri aracılığıyla veya ILoadFilter arabirimini kullanarak belirli bir dosya adı uzantısı için var olan bir filtre işleyicisini de bulabilirsiniz.
Bu konu aşağıdaki gibi düzenlenmiştir:
- Windows Search için Filtre İşleyicilerini Kaydetme
- Varolan Filtre İşleyicilerini Değiştirme
- Belirli Bir Dosya Uzantısı için Filtre İşleyicisi Bulma
- Ek Kaynaklar
- İlgili konular
Note
Filtre işleyicisi, IFilter arabiriminin bir uygulamasıdır.
Windows Search için filtre işleyicilerini kaydetme
Yeni bir protokol işleyicisi kaydetmek veya var olan bir protokol işleyicisini bulmak için ihtiyacınız olan GUID'ler aşağıdaki tabloda listelenmiştir.
| GUID | Kullanıcı veya uygulama tanımlı | Açıklama |
|---|---|---|
| 89BCB740-6119-101A-BCB7-00DD010655AF | Uygulama | IFilter arabirimi GUID'i, tüm filtre işleyicileri için bir kayıt defteri anahtarı sabitidir. |
| {PersistentHandlerGUID} | Kullanıcı | Bu, kalıcı işleyici için GUID'dir. |
| {FilterHandlerCLSID} | Kullanıcı | Bu, filtre işleyicisinin sınıf tanımlayıcısıdır (CLSID). |
| {ApplicationGUID} | Kullanıcı | Bu bir ara (toplu) GUID'dir. |
SearchFilterHost.exe SYSTEM hesabı altında çalıştığından ve bu nedenle oturum açmış kullanıcının HKEY_CURRENT_USER kayıt defteri anahtarlarına erişemediğinden filtre işleyicilerinin HKEY_LOCAL_MACHINE'a kaydedilmesi gerekir. Ayrıca, Kullanıcılar grubunun filtre işleyicisine .dll okuma ve yürütme erişimi olmalıdır çünkü SearchFilterHost.exe tüm yönetici haklarını kaldırır ve yalnızca yönetici olmayan haklara izin verir. Varsayılan Visual Studio proje konumu geçerli kullanıcının dizininde olduğundan ve Kullanıcılar grubuna okuma izinleri vermediğinden, .dll taşımanız veya ACL'leri SearchFilterHost.exe erişime izin verecek şekilde değiştirmeniz gerekir.
Yeni bir filtre işleyicisi kaydettiğinizde, html IFilter gibi açıklayıcı bir ad kullanmanızı öneririz.
Yeni filtre işleyicinizi kaydetmek için:
- Filtre işleyicisini kullanacak uzantıyı ve kalıcı işleyici GUID'sini belirtin:
HKEY_LOCAL_MACHINE
Software
Classes
.txt
PersistentHandler
(Default) = {PersistentHandlerGUID}
HKEY_LOCAL_MACHINE
Software
Classes
CLSID
{PersistentHandlerGUID}
PersistentAddinsRegistered
{89BCB740-6119-101A-BCB7-00DD010655AF}l
(Default) = {FilterHandlerCLSID}
- Filtre işleyicinizi aşağıdaki anahtarlar ve değerlerle kaydedin:
HKEY_LOCAL_MACHINE
Software
Classes
CLSID
{FilterHandlerCLSID}
(Default) = {DescriptiveFilterHandlerName}
InprocServer32
(Default) = DLL Install Path
ThreadingModel = Both
Filtre işleyicilerini kaydetmek için kullanımdan kaldırılmış yaklaşım
Bu yaklaşımın kullanılması önerilmez. Filtreler, Bileşen Nesne Modeli (COM) sınıfını temsil eden bir CLSID için ve/veya dosya adı uzantısı için kaydedilebilir. Bir sınıf için filtre işleyicisi ve sınıf içindeki bir dosya adı uzantısı için farklı bir filtre işleyicisi kaydetmeniz gerekiyorsa her iki filtreyi de kaydedebilirsiniz. Dosya adı uzantısı için kaydedilen bir filtre işleyicisi, CLSID için olan bir filtre işleyicisinden daha önceliklidir.
Bu girdiler, CLSID\{ApplicationGUID} sınıfına yönelik girdiyi içeren standart OLE kayıt defteri girdileridir. DLL sample.dll, .txt sınıfı için çalışan nesne davranışı uygular. PersistentHandler ek girdisine dikkat edin. Bu giriş, örnek sınıfın kalıcı nesnelerine yönelik isteklere aracılık etmekle sorumlu sınıfı belirtir. PersistentAddinsRegistered altındaki giriş, 89BCB740-6119-101A-BCB7-00DD010655AF(IID_IFilter) adlı arabirimden sorumlu uygulamayı belirler. IID_IFilter uygulayan sınıfın standart OLE kayıt defteri girdileri vardır. InprocServer32 DLL standart OLE mekanizması aracılığıyla yüklenir.
Windows Search, filtre işleyicisi için belirtilen iş parçacığı modelini gözlemler. İş parçacığı modeli Her İkisiolarak ayarlandığında, filtre işleyicisi iş parçacığı güvenli olmalıdır; aksi takdirde, iş parçacığı güvenli değilse, Apartmentbelirtin. Filtre işleyicilerinin her zaman iş parçacığı güvenliği sağlaması gerektiğini unutmayın.
Aşağıdaki örnek kayıt defteri girdileri, bir sınıf ve dosya adı uzantısı için kaydedilmiş bir filtre işleyicisine yöneliktir. {PersistentHandlerGUID} ve {FilterHandlerCLSID}, filtre işleyicisinin oluşturucusu tarafından belirtilmesi gereken değerleri belirten değişkenler olarak kullanılır. Değerler REG_SZ türündedir.
HKEY_LOCAL_MACHINE
Software
Classes
.txt
(Default) = SampleFile
SampleFile
(Default) = Class for Sample Files
CLSID
(Default) = {ApplicationGUID}
CLSID
{ApplicationGUID}
(Default) = Sample Files
InprocServer32
(Default) = sample.dll
PersistentHandler
(Default) = {PersistentHandlerGUID}
{PersistentHandlerGUID}
(Default) = Sample file persistent handler
PersistentAddinsRegistered
{89BCB740-6119-101A-BCB7-00DD010655AF}l
(Default) = {FilterHandlerCLSID}
{FilterHandlerCLSID}
(Default) = Sample Files
InprocServer32
(Default) = sampfilt.dll
ThreadingModel = Both
Mevcut filtre işleyicilerini değiştirme
.txt, .doc, .html, .url gibi yaygın dosya türleri için yerleşik filtre işleyicilerini değiştirmemenizi öneririz, çünkü bunu yapmak diğer sistem bileşenleri üzerinde istenmeyen etkilere neden olabilir. E-posta ileti gövdelerinin dizinlenmesi, örneğin .txt, .htmlve .rtf filtre işleyicilerine bağlıdır.
Mevcut bir filtre kaydının yerine dosya türü için yeni bir filtre işleyicisi yükleniyorsa, yeni filtre işleyicisi kaldırılırsa yükleyicinin geçerli kaydı kaydetmesi ve geri yüklemesi gerekir. Filtreleri zincirleme mekanizması yoktur. Bu nedenle, yeni filtre işleyicisi eski filtrenin gerekli işlevlerini çoğaltmakla sorumludur.
Belirli bir dosya uzantısı için filtre işleyicisi bulma
Belirli bir dosya adı uzantısı için filtre işleyicisi bulmak için ILoadFilterarabiriminikullanabilirsiniz. Aşağıdaki örnek kayıt defteri girdileri, HTML dosyaları için bunun nasıl yapılacağını gösterir. Bu örnekte, HTML belgeleri için filtre işleyicisi nlhtml.dll. Değerler REG_SZ türündedir.
Belirli bir dosya adı uzantısının filtre işleyicisini bulmak için:
- Filtrelenen dosya türü uzantısının \HKEY_LOCAL_MACHINE\SOFTWARE\Classes.extensionkayıt defteri girdisi altında kayıtlı kalıcı bir işleyicisi olup olmadığını denetleyin. Öyleyse, bu anahtarın {PersistentHandlerGUID} olmasına izin verin.
HKEY_LOCAL_MACHINE
SOFTWARE
Classes
.htm
PersistentHandler
{PersistentHandlerGUID}
- Uzantı için kayıtlı kalıcı bir işleyici yoksa, \HKEY_LOCAL_MACHINE\SOFTWARE\Classeskayıt defteri girdisinin altında belge türüyle ilişkili CLSID'yi bulun. Bu anahtarın {ApplicationGUID} olmasına izin verin. Ardından, CLSID için kalıcı bir işleyici kaydedilip kaydedilmediğini belirleyin: {ApplicationGUID} kullanarak \HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{ApplicationGUID} girdisinin kalıcı işleyicisini bulun. Bu anahtarın {PersistentHandlerGUID} olmasına izin verin.
HKEY_LOCAL_MACHINE
SOFTWARE
Classes
htmlfile
(Default) = Class for WWW HTML files
CLSID
(Default) = {25336920-03F9-11CF-8FD0-00AA00686F13}
CLSID
{25336920-03F9-11CF-8FD0-00AA00686F13}
PersistentHandler
(Default) = {PersistentHandlerGUID}
- Kalıcı işleyicinin GUID'sini belirleyin: {PersistentHandlerGUID} kullanarak belge türü için kalıcı işleyici GUID'sini bulun. 89BCB740-6119-101A-BCB7-00DD010655AF HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{PersistentHandlerGUID}\PersistentAddinsRegistered\ kayıt defteri girdisinin altındaki değer, bu belge türü için kalıcı işleyici GUID'sini verir. Bu anahtarın {FilterHandlerCLSID} olmasına izin verin.
HKEY_LOCAL_MACHINE
SOFTWARE
Classes
{PersistentHandlerGUID}
(Default) = HTML File Persistent Handler<dl>
REG_SZ {89BCB740-6119-101A-BCB7-00DD010655AF}
REG_SZ (Default) = {EEC97550-47A9-11CF-B952-00AA0051FE20}
- Filtre işleyicisini belirleyin: önceki adımda belirlenen {FilterHandlerCLSID} kullanarak \HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{FilterHandlerCLSID}\InprocServer32girdisinin altındaki filtre işleyicisini bulun. Bu örnekte kullanılan açıklayıcı filtre işleyici adı HTML IFilter'dır.
HKEY_LOCAL_MACHINE
SOFTWARE
Classes
CLSID
{EEC97550-47A9-11CF-B952-00AA0051FE20}
(Default) = HTML IFilter
Data type REG_SZ
InprocServer32
nlhtml.dll
Ek kaynaklar
- GitHubüzerinde bulunan IFilterSample kod örneği, IFilter arabirimini uygulamak için IFilter temel sınıfının nasıl oluşturulacağını gösterir.
- Dizin oluşturma işlemine genel bakış için bkz. Dizin Oluşturma İşlemi.
- Dosya türlerine genel bakış için bkz. Dosya Türleri.
- Bir dosya türünün dosya ilişkilendirme özniteliklerini sorgulamak için bkz. PerceivedTypes, SystemFileAssociations ve Application Registration.
İlgili konular
Filtre İşleyicileri Geliştirme
Windows Search 'da Filtre İşleyicileri Hakkında
Windows Search 'da Filtre İşleyicileri Oluşturmak için En İyi Yöntemler
Filtre İşleyicisinden Özellik Döndürme
Windows ile Birlikte Gelen Filtre İşleyicileri