仮想ファイルはインターネット一時ファイルから開かれます
質問
デスクトップの下にルートされる名前空間拡張機能を作成しました。この拡張機能の主な目的は、構成可能なディレクトリのリストを表す ZIP ファイルの仮想リストを提供することです。ユーザーがこれらの項目の 1 つをクリックすると、関連ディレクトリの内容が所定の場所に圧縮され、生成された ZIP ファイルがキャッシュ フォルダーに保存されます。
小さな問題を除けば、これはすべてうまく機能します。Windows エクスプローラーに移動した場合は、拡張機能を開いてアイテムをダブルクリックします。開いたファイルはキャッシュからのものです。[正しい]
一方、開くダイアログで開くと、開かれるファイルはインターネット一時ファイル ディレクトリにあるファイルになります。[正しくない]
インターネット一時ファイルではなくキャッシュ フォルダーからファイルを開くために、[開く] ダイアログ (notepad.exe などで使用する場合) について何を変更する必要がありますか。IShellFolder::GetDisplayNameOf で修飾されたファイル名を常に送信しようとしましたが、うまくいきませんでした。
解決 2
問題はマスキングによって修正されました SFGAO_FILESYSTEM
インターフェースメソッドの実装によって返される属性内 IShellFolder::GetAttributesOf.
他のヒント
正しい初期ディレクトリ (OPENFILENAME 構造体の lpstrInitialDir または lpstrFile パラメータ) が渡されていないようです。
lpstrInitialDir にキャッシュ ディレクトリを入力し、lpstrFile を空白のままにすると機能するはずです。