我为Windows 10写了一个新的缩略图处理程序。当我将其应用于自定义的“.mic”文件(将其重命名为“.jpg”文件)时,处理程序运行良好。但是,出于某种原因,处理程序根本不会被称为“.jpg”文件。替换“.jpg”缩略图处理程序
这些都是我“中的DllRegisterServer”期间添加到注册表项:
// List of registry entries we want to create
const REGISTRY_ENTRY rgRegistryEntries[] =
{
{ HKEY_LOCAL_MACHINE, L"Software\\Classes\\CLSID\\" SZ_CLSID_MYTHUMBHANDLER, REG_SZ, NULL, SZ_XDRVTHUMBHANDLER },
{ HKEY_LOCAL_MACHINE, L"Software\\Classes\\CLSID\\" SZ_CLSID_MYTHUMBHANDLER L"\\InProcServer32", REG_SZ, NULL, szModuleName },
{ HKEY_LOCAL_MACHINE, L"Software\\Classes\\CLSID\\" SZ_CLSID_MYTHUMBHANDLER L"\\InProcServer32", REG_SZ, L"ThreadingModel", L"Apartment" },
{ HKEY_LOCAL_MACHINE, L"Software\\Classes\\.mic\\ShellEx\\{e357fccd-a995-4576-b01f-234630154e96}" , REG_SZ, NULL, SZ_CLSID_MYTHUMBHANDLER },
{ HKEY_LOCAL_MACHINE, L"Software\\Classes\\.jpg\\ShellEx\\{e357fccd-a995-4576-b01f-234630154e96}" , REG_SZ, NULL, SZ_CLSID_MYTHUMBHANDLER },
};
hr = S_OK;
for (int i = 0; i < ARRAYSIZE(rgRegistryEntries) && SUCCEEDED(hr); i++)
{
hr = CreateRegKeyAndSetValue(&rgRegistryEntries[i]);
}
,当我试图测试我的“ThumbnailProvider.exe”实用处理器(设有窗口SDK),它工作得很好。我使用“.jpg”文件运行实用程序,并且我的处理程序已成功调用。
为什么我的处理程序没有被浏览器调用?
编辑:
在其他一些PC上,它似乎工作得很好。我的原始注册码运行良好,我的处理程序被称为“jpg”文件。两台电脑都具有Windows 10,实际上它们是使用相同基本映像的虚拟机。
编辑:
我注意到,我的处理程序正在被称为一些“.jpg”文件,而在其他人不需要。我在这里可能是错的,但我注意到的文件之间的主要区别是“解析单元”属性。对于工作文件,此属性没有值,对于非工作文件,此属性的值为“2”。我的所有电脑上都有相同的行为。 任何想法这个属性如何影响被调用的缩略图处理程序?如果它不是“解析单元”属性,那么导致它的差别是什么?
Software \\ Classes \\的默认值。jpg通常包含“jpegfile”(可以是其他任何内容),所以如果是这种情况,shell将查看Software \\ Classes \\ jpegfile。还要确保HKCU不会覆盖任何东西。有关信息,HKCR是HKLM + HKCU Software \\ Classes的综合视图。 –
我照你说的做了,我把它添加到“jpegfile”和“.jpeg”中。我在HKCR下看到他们都配置了我的处理程序。但是,我的处理程序仍然没有被称为“.jpg”文件。 – michael