- PR -

Vista"も"想定したファイル配置について

投稿者投稿内容
r
会議室デビュー日: 2006/08/15
投稿数: 18
投稿日時: 2006-12-21 14:00
開発環境: Visual Studio 2005

Windows VIstaに於いてセキュリティが強化されたことによりファイルのアクセス権限も変化しておりますが、実際にVistaでもインストールできるアプリケーションを開発しようとした時に、各種類のファイルをどのパスに配置するのがよいのでしょうか。
絶対こうしなければいけないというわけでなく、推奨されるという視点から教えていただければ幸いです。

・アプリケーションが使用する設定ファイル
  Vistaでは通常はProgram Filesの下を直接書き換えられない仕様に変更されている
  すべてのユーザで共通して使用する場合と、各ユーザごとに使用する場合で異なると思うが、それぞれの場合でどこにすべきでしょうか
・データベースファイル
  データベースシステムとしてファイル形式でデータベースを扱うシステムを使用し、Data providorなどを利用して接続する場合にどのパスにデータベースファイルを置くべきでしょうか
・一時ファイル
  Path.GetTempPath();で取得するパスになるかと思います
・ユーザが作成しそのユーザのみがするファイル
  My Documentがベストなのでしょうか
・複数のユーザで共有して作成し使用するファイル
  任意のパスをドライブの直下に作成して使用するようにするのがよいのでしょうか
・ユーザが大きなファイルを作成する可能性のある場合や大量のファイルを作成する可能性のある場合のファイルパス
  My Documentでもよいのでしょうか

よろしくお願いいたします。
とっちゃん
大ベテラン
会議室デビュー日: 2005/07/19
投稿数: 203
投稿日時: 2006-12-21 15:11
まだ XP用だと思いますが、Designed for Windows をまずは読んでみてはいかがでしょうか?
たぶん、疑問の8割は解決します。

残りは...
・アプリケーションが使用する設定ファイル
Program Files は、XPでも管理者権限がない限り任意に書き換えはできません。
別に Vista になって増えたとかじゃありません。
Vista の場合、管理者権限でも普通に何かやろうとした場合、権限が抑えられているというだけです(詳しくは、UAC(User Acoount Control)について調べてください)。

・データベースファイル
DBエンジンがわからない限りなんとも言えません。とはいえ、私はデータベースエンジンはどこのも使ってないので、聞かれてもわかりませんけどw

・一時ファイル
Path.GetTempPath();で取得しなければなりません。
XP でも、2000 でも、95 でも 98 でも、CE でもみんな同じです。
Vista だからじゃありません。

・ユーザが作成しそのユーザのみがするファイル
ユーザーにどこに作成するかを選択させるのがベストでしょう。
My Document(Vistaからは名前が変わります)がベストかどうかはそのユーザー次第です。

・複数のユーザで共有して作成し使用するファイル
ユーザー間で共有する場合は、共有したいすべてのユーザーがアクセスできる場所に保存します。
これも、プログラム側から固定することは難しいので、やはりユーザーに選択してもらうのがよいと思います。

・ユーザが大きなファイルを作成する可能性のある場合や大量のファイルを作成する可能性のある場合のファイルパス
大きなファイルがどのくらいなのか、たくさんのファイルがどういうものなのかにもよりますが、作成先を設定してもらうのがいいんじゃないですか?

アプリケーションの仕組みがわからないので、一般的なことしか書いてませんが、
質問も一般的なことしか聞いてないので、これでOK?

とりあえずは、冒頭にあげた Designed for Windows のロゴ案件のドキュメントを読んでみてください。





_________________
// とっちゃん(高萩 俊行)@わんくま同盟
// とっちゃん’Blog
// MS-MVP for Developer Tools - Visual C++
// WindowsInstallerの話題はhttp://www.freeml.com/msiまで
r
会議室デビュー日: 2006/08/15
投稿数: 18
投稿日時: 2006-12-21 20:08
ありがとうございます。

汎用的な質問としたのでそれだけの答えがいただければ十分なのです。

Vistaの場合はこちらでしょうか。

ユーザに任意で選ばせる場合だと、自由にフォルダを選んでいいとした場合どこにフォルダを作るのでしょうかね。
その場合、プログラムのデフォルトのフォルダはどこにするのがよいのでしょうか。

本質的な問題としてユーザのVistaの使用方法がXPまでと比べてどう変わっていくのかという部分が余りはっきりしないのです。
昔であればMy Document等というものはあっても使わないものだったのですが、今ではかなり多く使われます。
Tempフォルダにしても、デスクトップにしても、Program Filesにしても、OSの変化とともに使い方がどんどん変わっていますよね。
じゃあVistaになったらどうなるの?と今言われても多分誰も本当の答えは出せないのだと思うのですが、Vistaの持つ特性やMicrosoftや主要ベンダなどの動きから見えてくるところというのはないものでしょうかね‥‥。
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2006-12-21 20:21
引用:
ユーザに任意で選ばせる場合だと、自由にフォルダを選んでいいとした場合どこにフォルダを作るのでしょうかね。
その場合、プログラムのデフォルトのフォルダはどこにするのがよいのでしょうか。



MyDocument にしなさいと書いてあります。

この際、一度 Windows の default ACL を徹底的に洗ってみて考えてみることをお勧めします。
ただしその際、一台の PC を複数人で、かつ privacy に配慮する必要があるという前提で。

なぜ、そうなっているかよくわかると思います。
r
会議室デビュー日: 2006/08/15
投稿数: 18
投稿日時: 2006-12-21 20:36
引用:

ちゃっぴさんの書き込み (2006-12-21 20:21) より:
MyDocument にしなさいと書いてあります。



通常はそれがよいのでしょうね。
SMBを使用する場合等でその辺は顕著だと思います。
ただし、ギガレベルのファイルを扱うのには適さないですよね。

先ほどのコメントの際に説明不足で申し訳なかったのですが、質問の対象としたのは複数人で同じファイルを扱う場合のデフォルトのフォルダ位置についてです。
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2006-12-21 20:41
引用:
SMBを使用する場合等でその辺は顕著だと思います。
ただし、ギガレベルのファイルを扱うのには適さないですよね。



そんなの関係ないと思いますが?

引用:
質問の対象としたのは複数人で同じファイルを扱う場合のデフォルトのフォルダ位置についてです。



なら、'All Users の' でしょう。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-12-21 23:24
書くべきではない、はおなじですが、program files は、vistaでは仮想化されますから
_________________
r
会議室デビュー日: 2006/08/15
投稿数: 18
投稿日時: 2006-12-22 20:02
ありがとうございます。

引用:

ちゃっぴさんの書き込み (2006-12-21 20:41) より:

そんなの関係ないと思いますが?



SMBの移動プロファイルという機能を使用した場合、OSのログオン、ログオフ時にMy Document等にあるユーザファイルがサーバとマシンの間で送信されるので、数ギガのファイルがあるだけでも結構な時間がかかる上、その間に問題が発生した場合にデータの削除などが発生することもあります。

特定のプログラムが内部で使用するのを除けば私は殆ど使うことがないのですが、All Users内のフォルダを、Explorerや一般のアプリのファイル保存のフォルダの対象として使用する方って多いのでしょうか。

スキルアップ/キャリアアップ(JOB@IT)