Windows 10用の新しいサムネイルハンドラを作成しました。カスタム ".mic"ファイル( ".jpg"ファイルの名前)に適用すると、ハンドラがうまく動作します。しかし何らかの理由で、ハンドラが ".jpg"ファイルのために全く呼び出されていない。".jpg"サムネイルハンドラの置き換え
// 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]);
}
私は(窓SDKに付属)「ThumbnailProvider.exe」ユーティリティを使用して、私のハンドラをテストしようとしたとき、それがうまく機能:
これらは私が「DllRegisterServerは」中にレジストリに追加するエントリです。私はユーティリティを ".jpg"ファイルで実行し、ハンドラが正常に呼び出されました。
なぜハンドラがエクスプローラから呼び出されないのですか?
編集:
他のPCでは、完全に動作しているようです。私のオリジナル登録コードはうまく動作し、ハンドラは "jpg"ファイルのために呼び出されています。両方のPCにはウィンドウ10があり、実際には同じベースイメージを使用しているVMです。
EDIT:
私のハンドラがいくつかの ".jpg"ファイルに対して呼び出されていることに気付きました。私はここで間違っているかもしれませんが、私がファイル間で気づいた大きな違いは、 "解決単位"のプロパティです。作業ファイルの場合、このプロパティの値はありませんでした。作業していないファイルの場合、このプロパティの値は "2"です。私はすべての私のPCで同じ動作をします。 このプロパティが呼び出されるサムネイルハンドラにどのような影響を与えますか?それが「解決単位」プロパティでない場合、その原因となる違いは何ですか?
Software \\ Classes \\のデフォルト値。jpgには通常 "jpegfile"(それ以外のものもあります)が含まれているので、シェルはSoftware \\ Classes \\ jpegfileを探します。また、HKCUが何も上書きしないようにしてください。詳細については、HKCRはHKLM + HKCU Software \\ Classesの統合ビューです。 –
私が言ったように、私は "jpegfile"と ".jpeg"の両方に追加しました。私はそれらのすべてがHKCRの下で自分のハンドラで設定されているのを見る。しかし、私のハンドラはまだ ".jpg"ファイルのために呼び出されていません。 – michael