VC++2008にてプログラムを作成しています。
プログラムにてフォルダを作成し、
そのフォルダ内に、ファイルや別フォルダを作成しているのですが、
プログラムでのみ、内部のファイルやフォルダにアクセスでき、
エクスプローラやコマンドプロンプトからは、
トップのフォルダ自体をアクセス禁止にしたいのですが、
可能なのでしょうか?
やりたい事は、エクスプローラから、トップのフォルダ自体は
見えてて構わない(出来れば見えない方が良いが)
トップのフォルダをダブルクリックしても、
フォルダを開かせない。=中のファイル等は開くことはできない。
以上になります。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
厳密な回答ではないのですが
参考になればと思います。
"大切なデータをどこに保存すべきか?”
これは一概に言えません。
No.1さんのおっしゃるように
レジストリ
もありだとは思うのですが、
問題があります。
レジストリになんでもかんでも格納するようになった結果、
レジストリが巨大化し、アクセスに時間がかかる、
(アクセス最中に電源が落ちたりして)
レジストリが壊れるリスクが高まった
等々、様々な弊害が指摘されて久しいです。
また、メールなどの巨大なデータは
いくら大切なデータ
といってもレジストリに入れるべきかどうか....
(入れないほうが良いと思います)
それならどうする?
最近は、アプリごとの専用フォルダに
データを格納する方式が流行っています。
MS-Officeのoutlook2007等が代表的です。
これらの専用フォルダは
非常に深いところに作られ、
経路も分かりにくくなっています。
エクスプローラでもいくつもフォルダを開く必要があり、
途中の名前もわかりにくく命名されていて、
迷うことも多いです。
非常に開きにくく、簡単にはファイルに辿りつけません。
でも、何回も何回もやっているうちには覚えてしまうので、
”フォルダを開かせない”
方法の100%の代用にはなりえません。
でも、そんな深い”迷宮"ともいえる場所も
プログラムからは簡単に探し出せます
SHGetFolderPath関数です
http://msdn.microsoft.com/en-us/library/bb762181 …
(英語です)
残念ながら、日本語訳はありません。
特にVistaでは、UACが導入され、
さらに管理が厳しくなりました。
”うざい"
と散々な評判のUACですが、
”大切なファイルを壊す前に一呼吸置くタイミングを提供した"
という意味では
(少しは)ファイル保護に貢献している面もあるのではと思います。
遅くなりましたが、回答ありがとうございました。
専用のフォルダですと、いくら階層が深くても、
一度覚えられてしまえばアウトになってしまうので、
今回は、desktop.iniで作成してみようと思います。
No.1
- 回答日時:
見せたくないフォルダに「このフォルダは『ゴミ箱』フォルダである、と言う事をエクスプローラーに指示する内容が書かれたdesktop.ini」を作成すると、そのフォルダの中身を見ようと思ってもゴミ箱が表示され、中身を見られなくなります。
但し「ゴミ箱を空にする」や「ディスクのクリンナップ」をやられた場合、中身が保障されるかどうか判りませんので「ゴミ箱」ではなく「インターネット一時ファイル用のフォルダ」や「お気に入り」など、他のフォルダを示すdesktop.iniを使う方が良いかも知れません。
なお、desktop.iniを「正しい仕様で作成」すれば「このフォルダは特定のアプリ独自の専用フォルダで、エクスプローラーには中身を見せない」ようにする事が可能です(アプリが自身のクラスIDを新規に取得して、そのクラスIDを元にレジストして、専用フォルダであることをエクスプローラーに知らせるdesktop.iniを該当フォルダに設置する、と言う、非常に面倒臭いプログラムを書かないとなりません)
なお、小規模のデータであれば、ファイルではなく不揮発レジストリーにデータを記録した方が良いです。レジストリーなら不用意に削除されたり書換えられる心配はありません。
と言うか「不用意に削除されたり書換えられては困るデータは、ファイルでなくレジストリに保存すべきで、例えアプリ専用のフォルダであっても、ファイルに保存すべきではない」です。
そして「ファイルに保存されたデータは、例えアプリ専用のフォルダであっても、予期せぬ削除や書換えが起こる事を想定し、削除されたり書換えられたりしてもアプリが異常終了しないように作るべき」です。
そう言った訳で「削除されたり書換えられたりしたら困るデータをファイルに保存しようとした事そのものが間違い」であり「アプリの基本的な設計に欠陥がある」ので、早急に欠陥を排除すべきと思われます。
遅くなりましたが、回答ありがとうございました。
説明不足でしたが、プログラム固有のファイルではなく、
サーバから取得したファイルを展開するための
ソフトを作成しているため、小規模どころか100MBも
有り得るため、レジストリではなく、desktop.iniを
利用して作成しようかと思います。
とは言っても、ネットでサラッと見てみる限り、
何やら難しそうではありますが。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
デスクトップの画像をhtmlに表...
-
Excelのハイパーリンクについて...
-
Windows10でコマンドプロンプト...
-
excelマクロ 冒頭3文字が一致す...
-
期間を指定したフォルダの削除...
-
ExcelのVBAでフォルダ指定がで...
-
VBA 最新のフォルダ取得
-
パス名に2バイト文字(マルチバ...
-
Access VBA で フォルダ権限...
-
AIX findコマンド
-
会社のネットワーク上のファイ...
-
フォームを最前面に表示したい...
-
Let’s Encryptでwebroot設定な...
-
フォルダにリンクを貼りたい
-
VBAで、ファイルを移動する方法...
-
API関数(DLL)の呼び出しにお...
-
VBA フォルダ名と画像ファイル...
-
パスを通したはずなのに「パス...
-
フォルダ監視ソフト
-
【VC++6.0(MFC)】適切なSHBrows...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
VBA 最新のフォルダ取得
-
ファイル名と同名のフォルダを...
-
デスクトップの画像をhtmlに表...
-
Excelのハイパーリンクについて...
-
VBプロジェクトでのフォルダ構...
-
会社のネットワーク上のファイ...
-
【マクロ】ファイル名の日付に...
-
パス名に2バイト文字(マルチバ...
-
Access VBA で フォルダ権限...
-
カレントフォルダって?
-
VBA フォルダ名に特定の文字を...
-
ExcelVBAでフォルダへのハイパ...
-
C ファイル出力で、フォルダが...
-
excelマクロ 冒頭3文字が一致す...
-
保存先のフォルダ名を指定した...
-
マクロVBAのフォルダ階層別で検...
-
Excelで指定したフォルダに保存...
-
ディレクトリ名変更してコピー...
-
vbsで選択ダイアログを表示した...
おすすめ情報