ごみ箱やマイコンピュータ、コントロールパネルのような、クリックすると通常のエクスプローラと違った動きをする特殊フォルダを自作で作りたいと思っています。

具体的には特定のフォルダをクリックすると関連付けられたEXEファイルが実行されるような仕組みにしたいのです。

レジストリのCLSIDにキーを追加し、フォルダ名変更の際にフォルダ名に続いてドットとCLSIDを入れればフォルダアイコンくらいは変えられるというところまでは理解しました。
しかしながら、いろいろ調べてもそれ以上のことを記述している文献が見つからず困っています。

上記で述べたことを実現するには具体的にどこをどう弄ればいいのでしょうか?

回答の条件
  • 1人5回まで
  • 登録:2008/09/11 19:57:51
  • 終了:2008/09/17 19:30:07

回答(3件)

id:mj99 No.1

mj99回答回数138ベストアンサー獲得回数382008/09/11 22:56:11

ポイント40pt

Shell Namespace Extension、シェル名前空間拡張ですね。


特定の特殊フォルダ(ゴミ箱、フォント等)の作成方法

http://www.microsoft.com/japan/msdn/windows/windows2000/shellins...


独自のものを作ろうと思ったらこんな資料でしょうか。英語は読めません。

http://msdn.microsoft.com/en-us/library/bb776812.aspx

http://msdn.microsoft.com/en-us/library/bb776816.aspx


特殊フォルダのサンプルプログラム(エクスプローラ上でレジストリの内容をツリー表示)

http://support.microsoft.com/kb/178665/ja

ダウンロードされるRegView.exeは自己解凍ファイルです。


解凍したソースはVS.NETなどでビルドできます。

ビルドすることによって、regview.dllが作成されます。


regview.dllはレジストリ登録が必要です。

readme.txtに登録方法が載っています。


regview.dllのCLSIDは、

4778AFE0-2289-11d0-8AEC-00A0C90C9246


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace

にCLSID名のキーを作成すると、デスクトップにアイコンが表示される。


アイコンは、名前変更と削除ができないので、

HKEY_CLASSES_ROOT\CLSID\{4778AFE0-2289-11D0-8AEC-00A0C90C9246}\ShellFolder

のAttributesを、

30 00 00 A8

に書き換えるとよい。


Attributesの意味は、

http://msdn.microsoft.com/en-us/library/bb762589.aspx

です。入力は、リトルエンディアンなので注意。


----

かなり昔(Win95が出たばかりのころ)Cabファイル(圧縮ファイル)を開くShell Namespace Extensionの作成手順をソース付きで解説していた雑誌記事を読んだのですが、なんという雑誌だったのかもう覚えていません。

id:mj99 No.2

mj99回答回数138ベストアンサー獲得回数382008/09/11 23:31:36

長々と書いた上に連投で申し訳ありませんが、

エクスプローラに組み込むのではなく、単純にExeを実行できればよいのであれば、

http://www.microsoft.com/japan/msdn/windows/windows2000/shellins...

にある、「Shell Commandオブジェクト」で実現可能です。

Shell\Open\Commandにプログラムのフルパスを書く。


----

なお、グローバルにユニークなCLSIDを作成するには、GUIDGENを使用します。

http://www.microsoft.com/downloads/details.aspx?FamilyID=94551f5...

id:kiku-_-san

ご丁寧にご回答頂きありがとうございます。

単純にEXEファイルを実行したいだけなのでこちらを試してみました。

ですが下記手順をふんでもEXEファイルが実行されません。

回答可能回数を増やしましたのでご回答いただければ幸いです。

■手順

1.Cドライブ直下にtest.exeを置く⇒ダブルクリックで実行出来ることを確認

2.CLID「{00000000-0000-0000-0000-000000000000}」でキーを作る

3.ご指定頂いたURLに書いてある「Shell Commandオブジェクト」と同じ構造でキー・値を作る

  ⇒HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{00000000-0000-0000-0000-000000000000}\Shell\Open\Commandの既定値(種類:REG_EXPAND_SZ)に「C:\test.exe」と指定

4.適当な場所に新規フォルダを作り、フォルダ名を「test.{00000000-0000-0000-0000-000000000000}」とする

5.手順4で作成したフォルダをダブルクリック

■実行結果

ただ単にフォルダの中身が見れるだけ。

※フォルダ名の表示は「test.{00000000-0000-0000-0000-000000000000}」となっています。

 Shell\Openの中にあるCommandキーを適当な名前にリネームすると表示が「test」となります。

■今回のテストに使ったものをエクスポートしたregファイル(テキストファイルに記述後、「XXX.reg」として保存しインポートして使って下さい。)

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{00000000-0000-0000-0000-000000000000}]

@="テスト"

"InfoTip"="テストです。"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{00000000-0000-0000-0000-000000000000}\DefaultIcon]

@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\

00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,00,68,00,\

65,00,6c,00,6c,00,33,00,32,00,2e,00,64,00,6c,00,6c,00,2c,00,33,00,31,00,00,\

00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{00000000-0000-0000-0000-000000000000}\Shell]

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{00000000-0000-0000-0000-000000000000}\Shell\Open]

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{00000000-0000-0000-0000-000000000000}\Shell\Open\Command]

@=hex(2):43,00,3a,00,5c,00,74,00,65,00,73,00,74,00,2e,00,65,00,78,00,65,00,00,\

00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{00000000-0000-0000-0000-000000000000}\ShellFolder]

"Attributes"=dword:00000000

2008/09/13 01:52:20
id:mj99 No.3

mj99回答回数138ベストアンサー獲得回数382008/09/13 03:28:52

ポイント40pt

添付されたregを登録して、試してみました。

どうやら正しくできているようです。


ただ、フォルダの拡張子を変更する方法ではアイコンを作成できないようで。


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace

に、キー{00000000-0000-0000-0000-000000000000}を追加。

レジストリキー追加後、デスクトップを再読み込みするとデスクトップにアイコンが表示されます。

(再読み込みは、デスクトップ上のどれでもいいのでアイコンをクリック(選択状態)にして、F5キーを押下)


----

ほか、下記の場所にアイコンは登録できます。


マイ コンピュータ

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace


ネットワーク コンピュータ

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\NetworkNeighborhood\NameSpace


コントロールパネル

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel\NameSpace


----

そのほかの場所にはショートカットとしてしか作成できないようです。

id:kiku-_-san

無事成功しました!

ありがとうございました。

フォルダの拡張子を変更する方法が使えないのは痛いですが…

まだ回答は募集します。

他の方でフォルダの拡張子を変更する方法をご存じの方がいらっしゃいましたらご回答お願いします。

2008/09/13 12:01:08

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません