- ベストアンサー
[No.732090の逆]好きなフォルダをエクスプローラでのデスクトップ直下等に置く
- No.732090の内容から指定された部分にCLSIDを指定することで、そのフォルダや特殊なファイルをおくことができることがわかりました。そしてこれがいろいろなところで応用できることがわかりました。
- しかし、「ここにマイドキュメント等とはまったく違う"C:\Program Files"あたりを持ってこれないだろうか?」ということがあります。この質問では、「C:\Program Files」をCLSIDと結び付けてフォルダを指定する方法が分からないと困っています。
- 過去の質問から、「デジカメ用のフォルダが出来た」という話を見ました。これはおそらくWindowsがもともと準備していないフォルダであり、後から登録されたものだと考えています。自分も同じ手段でフォルダを登録できるのではないかと考えましたが、マイドキュメントやデスクトップのパスをレジストリエディタで検索しても発展性がなさそうで困っています。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>しかも自分の理解力の無さか、 >InprocServer32にshell32.dllを設定したり >PropertySheetHandlersをおく時 >「自分は"何の処理のために"何をどうしているのか」 >が全然想像できず・・・・ >難しい・・・(~△~) ここらへんのことを普通の人が考えるのはかなり難しいですね。 で、資料はどこにあるかというと、Windowsなんで、 やっぱりMicrosoftです。 しかも、レジストリは一般ユーザがいじるものではなく 開発者(プログラマーとか)がいじるものなので、 技術文章のようなものになってしまいますし、 詳細な資料は英語になってしまいます。 ちなみに、 >InprocServer32にshell32.dllを設定したり じつは不要です(^^;; キー自体を削除しても動くはずです。 これは何かというと、COMと呼ばれる技術でDLLやActiveXコントロールを使うときにDLLの名前を取得するためのものです。ThreadingModelはマルチスレッドでそのDLLを使用可能か?といった情報です。 >PropertySheetHandlersをおく時 ファイルやフォルダのプロパティに、新しいタブシートを挿入するプログラムを呼び出すためのキーです。 ということで、はっきり言ってこれも不要なんですよね(^^;; で、エクスプローラの左側にできたアイコンを再確認したところ、展開できませんでした(^^;; これについては勘弁してください・・・ レジストリのシェル拡張、あんまり知らないもんで。
その他の回答 (3)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
>しかし、知りたかったのは左側のツリーにも追加することであるが、 >ここで成功したのは右側の領域での話のみであった。 ツリーのところにも、デスクトップの両方に表示されているものといえば、マイドキュメントですよね。 で、No.732090にも書いてあるとおり、 マイ ドキュメント {450D8FBA-AD25-11D0-98A8-0800361B1103} です。 これをレジストリで検索していくと、 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID に、キーがありました。 そのなかのShellFolderの中のAttributes(属性ですね)の値がDWORDで16進でf0400174となっていました。 ここで思い出していただきたいのが、#2のなかで、作った場所やタイプは違いますがShellFolder、Attributesって追加しましたよね。 つまり、Attributesの値は、#2では00 00 00 00(特別な設定なしってことかな?)でしたが、マイドキュメントと同じにしたらどうなるか? ということです。 で、実際に、 HKEY_CLASSES_ROOT\CLSID\{FD4DF9E0-E3DE-11CE-BFCF-ABCD1DE12345}\ShellEx\PropertySheetHandlers\{FD4DF9E0-E3DE-11CE-BFCF-ABCD1DE12345}\ShellFolder のAttributesをDWORDで16進でf0400174にしてみると、 ご希望のように、エクスプローラの左側にも表示されました。 これでいかがでしょうか?
- taka_tetsu
- ベストアンサー率65% (1020/1553)
参考url、ぜんぜん情報足りませんでした。 失礼しました。 ずばりの方法です。 googleのキャッシュなので消えちゃうかも(^^; http://www.google.co.jp/search?q=cache:uuT0QmnCt3EJ:pcweb.mycom.co.jp/column/winxp/winxp091.html+ShellFolder+Attributes&hl=ja&lr=lang_ja&ie=UTF-8 ちなみに、本家本元の情報です。 http://www.microsoft.com/japan/msdn/windows/windows2000/shellinstobj.asp
お礼
ご回答ありがとうございます。 確認してみました。 しかし・・・・ ・・・半分成功、半分失敗といったところでしょうか。 ▼成功 この記述の手順を踏むことで確かに、 CLSIDにフォルダを適用できたようで、 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\ Explorer\MyComputer にそのCLSIDを登録した結果 エクスプローラでマイコンピュータをクリックした際、 前述の[その他]には「My Folder」という名のフォルダで C:\My Folderへのリンクが出来ていた。 (ちなみに良く分からないDelegate Folderにもキーを作成したが 何も変わった様子は無い) ▼失敗 しかし、知りたかったのは左側のツリーにも追加することであるが、 ここで成功したのは右側の領域での話のみであった。 ↑ここが解決したら締め切ります しかも自分の理解力の無さか、 InprocServer32にshell32.dllを設定したり PropertySheetHandlersをおく時 「自分は"何の処理のために"何をどうしているのか」 が全然想像できず・・・・ 難しい・・・(~△~) ---------------------------------- おまじないに励むことにするかなぁ・・・・ あ、あと、マイページのコメントに 自分の手に負えなくなった未解決事件がたくさんあります。 どうぞよろしく。
補足
ご回答ありがとうございます。 今は実験用マシンは父が使用しているので (注:マシンは父のものです。いじくり倒してますが) 兄のマシンを使用しているのですが 父に比べて、兄は変更すると結構うるさいので 明日確認することにします。 ------------------------------------------- 本家本元の情報は・・・ ちょっと僕には理解できないかも。
- taka_tetsu
- ベストアンサー率65% (1020/1553)
>ということは、「後から登録された」のであり、自分も 同じ手段で登録すれ >できるのではないか・・・と考えました こちらをどうぞ http://www.geocities.co.jp/SiliconValley-SanJose/6898/tips_clsid.htm
補足
ご回答ありがとうございます 以下のことを行った結果、失敗しました 自分が思いっきり何らかの勘違いをしていると思うので 添削をお願いします。 HKEY_CLASSES_ROOT\CLSIDに新たなCLSIDを登録する必要があり、 一番上が{00000010-0000-0010-8000-00AA006D2EA4}だったため 単純に{00000009-0000-0010-8000-00AA006D2EA4}のキーを追加 図にある infotip,DefaultIcon,shell\findは 後で指定すればいいと考え飛ばしました そして、このCLSIDの指定内のどこかにに"C:\Program Files"を 書くはずだと思ってみていると図では shellex\ExtShellFolderView\{5984FFE0-28D4-11CF-AE66-08002B2E1262}の PersistMonikerにパス(何のパスかは理解していない)が指定されているので そのキーを作成しPersistMonikerを文字列値として作成し、 データとして"file://C:\Program Files"を指定。 ("file://"はよく分からないので一応つけました) その後、 {00000009-0000-0010-8000-00AA006D2EA4}のキーを HEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ Explorer\MyComputer\Namespaceに追加。 レジストリエディタを閉じ、 エクスプローラでマイコンピュータを見たところ、 ツリーには表示されていないものの いつもある [ハードディスク ドライブ] [リムーバブル記憶域のあるデバイス] の他 [その他]が出来ており、ここに 名前の無いフォルダが出来ていました。 ダブルクリックしても透明になっただけで何も起こりません。(汗) 右クリックしたところ 切り取り ショートカットの作成 削除 しか存在しません
お礼
ありがとうございます おととい、昨日テストだったのでお礼が遅くなりました。 >レジストリは一般ユーザがいじるものではなく開発者 >(プログラマーとか)がいじるものなので、 ひそかに開発者志望だったり・・・・(汗) でもWinprocすら使ったことなかったり >これは何かというと、COMと呼ばれる技術でDLLや>ActiveXコントロールを使うときに >DLLの名前を取得する しかも、EXEしか作ったことがなく、 DLLやOCXを作ったことがない。 ・・・それはともかく、この辺の話がわかりそうな ソース(できればVB.NET)はないでしょうか? 今回の場合はここに指定されたDLLによって このフォルダ(のハンドラ)が 呼び出せるようにするんですよね?? >ファイルやフォルダのプロパティに、新しいタブシー >トを挿入するプログラムを呼び出すためのキーです。 確かに不要っぽい >で、エクスプローラの左側にできたアイコンを再確認 >したところ、展開できませんでした(^^;; う~ん残念。自分も#3読んでAttributesを調べようと 検索したが上手くはいかず(涙) もうちょい待ってみようかなっ。
補足
とりあえず、いったん締め切ります。 これから英語の文章読むのかと思うと少し鬱ですが。