この人頭いいなと思ったエピソード

VC++2008にてプログラムを作成しています。

プログラムにてフォルダを作成し、
そのフォルダ内に、ファイルや別フォルダを作成しているのですが、
プログラムでのみ、内部のファイルやフォルダにアクセスでき、
エクスプローラやコマンドプロンプトからは、
トップのフォルダ自体をアクセス禁止にしたいのですが、
可能なのでしょうか?

やりたい事は、エクスプローラから、トップのフォルダ自体は
見えてて構わない(出来れば見えない方が良いが)
トップのフォルダをダブルクリックしても、
フォルダを開かせない。=中のファイル等は開くことはできない。

以上になります。
よろしくお願いします。

A 回答 (2件)

厳密な回答ではないのですが


参考になればと思います。

"大切なデータをどこに保存すべきか?”
これは一概に言えません。

No.1さんのおっしゃるように
レジストリ
もありだとは思うのですが、
問題があります。

レジストリになんでもかんでも格納するようになった結果、
レジストリが巨大化し、アクセスに時間がかかる、
(アクセス最中に電源が落ちたりして)
レジストリが壊れるリスクが高まった
等々、様々な弊害が指摘されて久しいです。

また、メールなどの巨大なデータは
いくら大切なデータ
といってもレジストリに入れるべきかどうか....
(入れないほうが良いと思います)

それならどうする?

最近は、アプリごとの専用フォルダに
データを格納する方式が流行っています。
MS-Officeのoutlook2007等が代表的です。
これらの専用フォルダは
非常に深いところに作られ、
経路も分かりにくくなっています。

エクスプローラでもいくつもフォルダを開く必要があり、
途中の名前もわかりにくく命名されていて、
迷うことも多いです。
非常に開きにくく、簡単にはファイルに辿りつけません。

でも、何回も何回もやっているうちには覚えてしまうので、
”フォルダを開かせない”
方法の100%の代用にはなりえません。

でも、そんな深い”迷宮"ともいえる場所も
プログラムからは簡単に探し出せます
SHGetFolderPath関数です

http://msdn.microsoft.com/en-us/library/bb762181 …
(英語です)

残念ながら、日本語訳はありません。

特にVistaでは、UACが導入され、
さらに管理が厳しくなりました。

”うざい"
と散々な評判のUACですが、
”大切なファイルを壊す前に一呼吸置くタイミングを提供した"
という意味では
(少しは)ファイル保護に貢献している面もあるのではと思います。
    • good
    • 0
この回答へのお礼

遅くなりましたが、回答ありがとうございました。
専用のフォルダですと、いくら階層が深くても、
一度覚えられてしまえばアウトになってしまうので、
今回は、desktop.iniで作成してみようと思います。

お礼日時:2009/06/02 10:17

見せたくないフォルダに「このフォルダは『ゴミ箱』フォルダである、と言う事をエクスプローラーに指示する内容が書かれたdesktop.ini」を作成すると、そのフォルダの中身を見ようと思ってもゴミ箱が表示され、中身を見られなくなります。



但し「ゴミ箱を空にする」や「ディスクのクリンナップ」をやられた場合、中身が保障されるかどうか判りませんので「ゴミ箱」ではなく「インターネット一時ファイル用のフォルダ」や「お気に入り」など、他のフォルダを示すdesktop.iniを使う方が良いかも知れません。

なお、desktop.iniを「正しい仕様で作成」すれば「このフォルダは特定のアプリ独自の専用フォルダで、エクスプローラーには中身を見せない」ようにする事が可能です(アプリが自身のクラスIDを新規に取得して、そのクラスIDを元にレジストして、専用フォルダであることをエクスプローラーに知らせるdesktop.iniを該当フォルダに設置する、と言う、非常に面倒臭いプログラムを書かないとなりません)

なお、小規模のデータであれば、ファイルではなく不揮発レジストリーにデータを記録した方が良いです。レジストリーなら不用意に削除されたり書換えられる心配はありません。

と言うか「不用意に削除されたり書換えられては困るデータは、ファイルでなくレジストリに保存すべきで、例えアプリ専用のフォルダであっても、ファイルに保存すべきではない」です。

そして「ファイルに保存されたデータは、例えアプリ専用のフォルダであっても、予期せぬ削除や書換えが起こる事を想定し、削除されたり書換えられたりしてもアプリが異常終了しないように作るべき」です。

そう言った訳で「削除されたり書換えられたりしたら困るデータをファイルに保存しようとした事そのものが間違い」であり「アプリの基本的な設計に欠陥がある」ので、早急に欠陥を排除すべきと思われます。
    • good
    • 0
この回答へのお礼

遅くなりましたが、回答ありがとうございました。
説明不足でしたが、プログラム固有のファイルではなく、
サーバから取得したファイルを展開するための
ソフトを作成しているため、小規模どころか100MBも
有り得るため、レジストリではなく、desktop.iniを
利用して作成しようかと思います。
とは言っても、ネットでサラッと見てみる限り、
何やら難しそうではありますが。。。

お礼日時:2009/06/02 10:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報