レジストリ vs プライベートINI
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
01/11/22 18:00ID:kWO77Burプログラマの視点から、逆にユーザの視点から、
それぞれの利点や欠点について意見を聞かせてください。
0276名無しさん@お腹いっぱい。
02/01/29 21:41ID:???>INIって元々どういう事が記憶
今のレジストリと同じ。
元々OSの初期化のために作られて、ついでにアプリケーションの設定にも使われた。
初期化のためにあるから書き込みよりも読み出し用って感じ。
読み取り用のAPIには数値を取得するものがあるけど書き込み用には数値用のが無くて、
数値を書き込む場合は一度文字列に変換してから文字列として書き込まないといけなかったりする。
当然、今現在はただのレガシーAPIで、
開発者用のMS配布のドキュメントには
>Note This function is provided only for compatibility with 16-bit Windows-based applications.
>Applications should store initialization information in the registry.
と、ちゃんと書かれてある。
0277なんか今日は激重だね
02/01/29 22:01ID:???>HKEY_CURRENT_USER\Software
今現在の使われ方をするためのものとして存在してるけど、"ついで"として使われてるだけ。
ちなみに俺はiniファイル派だったりする。
自分で作るアプリは全てiniに設定を保存してる。
たぶん世の中がXMLで設定を保存するようになってもiniファイル使ってると思う。
0278名無しさん@お腹いっぱい。
02/01/29 22:49ID:???あんたの好みという以外の根拠は?
0279age
02/01/29 23:42ID:SBBxg6cU0280名無しさん@お腹いっぱい。
02/01/29 23:46ID:???アプリの設定は含まれないよな?
0281名無しさん
02/01/30 16:18ID:???MozillaなんかはApplication DataにブックマークやCookieを保存するけど
これはデータとも言えるし設定とも言えるし…
0282名無しさん@お腹いっぱい。
02/01/30 16:47ID:???64KBを目安に決めれと言ってる
0283名無しさん@お腹いっぱい。
02/01/30 19:38ID:???でもさんざんいじられてるのでそのうち新規ウィンドウズインストールできれいに消すことになる
0284名無しさん@お腹いっぱい。
02/01/30 20:02ID:???だからさー、そういうときはいじられたくない根拠を書こうや
0285名無しさん@お腹いっぱい。
02/01/30 20:16ID:???それは64KBを超える場合はレジストリにしろってこと?
ソースを教えて欲しい。
設定とアプリのデータについて個人的には、
「データ」はおおざっぱに言えば操作によって増減するファイルのようなもの、
(例えばブックマークやキャッシュファイルやクッキーなど)
「設定」はそれ以外のアプリに関する設定だと思っていた。
思いっきりローカルルールだけど。
0286名無しさん@お腹いっぱい。
02/01/30 21:47ID:r+HtcEpCレジストリを使う人のためにレジストリ礼儀作法を厳しく指示するべき…
たまに大量のデータをレジストリに投げ入れたりする酷いプログラムに出くわす.
高速に何度もレジストリにアクセスするようなプログラムまである.
NT系でも9x系でも,レジストリをダイエットさせる再構築には
再起動が必要不可欠だから,運用形態によっては悲惨だ.
0287_
02/01/30 23:22ID:EMJO49PAその為のWindowsロゴだったりするんだけどね。
http://www.microsoft.com/japan/windows/logo/
ini使ってると、マルチユーザーでまるで使い物にならなくなるんだよね。
反面、個人で使う場合、iniの方が便利な事も・・・
0288名無しさん@お腹いっぱい。
02/01/31 00:02ID:???逆逆。64KBを超える場合はApplication Dataにしろって書いてある。
http://www.microsoft.com/japan/winlogo/downloads/AppSpec22j.doc
> ・HKCU (HKEY_CURRENT_USER) レジストリハイブは、小さなデータ
> (約 64K) の保存やユーザーごとのポリシー設定の保存に適しています。
(中略)
> ・大きなファイルベースのデータは、[Application Data] フォルダに
> 入れなければなりません。たとえば、Internet Explorer の一時
> インターネット キャッシュはユーザー プロファイルに格納され、
> レジストリには格納 されていません。
> ・インストール時に、アプリケーションで HKCU と HKLM に合計 128K を
> 超えるデータを保存してはいけません。ただし、HKEY_CLASSES_ROOT
> は例外です。
0289名無しさん@お腹いっぱい。
02/01/31 00:12ID:???まったく逆を推奨してるんだね…
0290名無しさん@お腹いっぱい。
02/01/31 00:16ID:???いや、Application Dataっていうのは、iniというわけでなく・・・
ユーザー毎に持ってるフォルダなので、そこに自由な形式のデータを格納しなっせ。
という事だと思われ。
0291名無しさん@お腹いっぱい。
02/01/31 00:25ID:???0292名無しさん@お腹いっぱい。
02/01/31 00:36ID:???>>289は別にiniを使うとは言ってないと思うが。
0293名無しさん@お腹いっぱい。
02/01/31 01:15ID:???早合点。スマソ。
0294名無しさん@お腹いっぱい。
02/02/02 00:15ID:???レジストリのsoftware直下のキー名がソフト同士でかぶったり
したことってないのかな。
0295名無しさん@お腹いっぱい。
02/02/02 01:14ID:???超漢字使え。
0296名無しさん@お腹いっぱい。
02/02/04 18:11ID:???基本的に"software\[作者が付けた任意の名前]\[ソフトウェア名]"になるから
かぶる事は無いんだけどたまに行儀の悪いソフトがsoftware直下に
ソフト名を持ってくるのもあるから注意せないかん。
0297名無しさん@お腹いっぱい。
02/02/04 18:20ID:???ツールと呼ばれる程度のソフトでインストールされたフォルダ以外に
設定とかデータを残しては欲しくないな。
マルチユーザの場合はマルチインストール。これ最強。
0298名無しさん@お腹いっぱい。
02/02/04 19:28ID:???>>284
0299297
02/02/04 19:42ID:???アンインストーラさえついててキッチリ消してくれるならな。
ただ、アンインストーラついてても消さない糞アプリもあるわけで
レジストリに書き込むアプリは何と無く使いたくない。
んで、あちこちにファイル作られるとアンインストール面倒。
それからバックアップもめんどい。
つーかこれ何回も言われてる事だろ。
いちいち書く必要も無いと思うが。
0300名無しさん@お腹いっぱい。
02/02/04 21:33ID:???その代わりアンインストールするとき完全に消せ
これがホントの気持ち
0301名無しさん@お腹いっぱい。
02/02/04 22:43ID:???”完全に”
だね
消してると見せかけてよく見ると
鼻くそ程度のこってることがあって
あまり精神的に良くないことが在る
0302名無しさん@お腹いっぱい。
02/02/05 10:29ID:SaWLjtr30303名無しさん@お腹いっぱい。
02/02/05 10:41ID:???使ってるうちにどんどん肥大してくよ。新しいソフト
入れなくてもさ。
ディスクのイメージでもとっておいて、数ヶ月に1回
リカバリすればいいじゃん。よさそうなソフトあったら
どんどん試しちゃおうぜ、レジストリなんて気にしないで。
0304名無しさん@お腹いっぱい。
02/02/05 14:27ID:???> ディスクのイメージでもとっておいて、数ヶ月に1回
> リカバリすればいいじゃん。
めんどくさいから嫌だ。
===== 終了 =====
0305名無しさん@お腹いっぱい。
02/02/05 14:47ID:zIX9aGD+すぐに分かるから,いくらでもダイエットできるが.
systemに溜まった用途不明のdllだけはドウシヨウモナイ…
0306名無しさん@お腹いっぱい。
02/02/05 16:19ID:???そのダイエットに使う時間は無意味だと思いませんか?
0307名無しさん@お腹いっぱい。
02/02/05 17:29ID:???0308名無しさん@お腹いっぱい。
02/02/05 19:30ID:???0309名無しさん@お腹いっぱい。
02/02/05 19:34ID:???好きでやってるんだからほっといてやれよ
0310名無しさん@お腹いっぱい。
02/02/05 19:37ID:???0311名無しさん@お腹いっぱい。
02/02/06 07:08ID:???なんと言っても「アンインストールのとき〜」という記述が楽。
Win32の手引きとも言えるリファレンスにはレジストリを使え、
と書いているがこれはActiveXの考えと同じだと思う。つまり保
存されているところがどこかを認識せずに使えるってところだな。
たしかに>>307の言うとおり大した問題じゃないが、INIだとバ
ックアップが楽だという利点がある。レジストリだと全部バック
アップするということをするのもいいかもしれないが効率が良く
ないし。>>310のとおりのような機能があるのもいいと思う。
0312妄想
02/02/06 09:05ID:???具体的引数はまだ考えてないけど、とりあえず設定を保存/復帰ファイル名をPCharで。
で、もしこれが標準になれば1つのアプリを走らせるだけで、
INIだろうが独自形式のファイルだろうがレジストリだろうが、
ほぼ全ての使っているアプリの設定の保存/復帰が出来る。
って、寝起きの時の妄想をちょっとまとめただけだから、
あまりキツイツッコミは無しで(汁
0313名無しさん@お腹いっぱい。
02/02/06 14:24ID:???マルチインストールという答えはやめて欲しい。
バージョンアップのたびに何回もインストールするのはめんどうだし、
インストールするユーザの数が少ないとは限らないから。
0314名無しさん@お腹いっぱい。
02/02/06 17:11ID:???作者は大変だが
0315名無しさん@お腹いっぱい。
02/02/06 17:49ID:???作者からマルチインストロールって答えが返ってきたら、
各ユーザ用のINIを差し替えるて起動するバッチ、
もしくはそう言うツールを作ってみては?
0316名無しさん@お腹いっぱい。
02/02/06 18:08ID:???ツール作るにしても結局作者がINI差し替え機能をサポートしてないとならないんだよな。
というか差し替え機能があるなら初めからマルチインストールとは答えないと思われ。
0317315
02/02/06 18:29ID:???説明が足りなかったスマソ。
>そう言うツール
というのは、
単に現在のユーザ名を取得、そこから例えば
AppName_CurrentUserName.ini
みたいなファイルを
AppName.ini
という名前に上書きコピー、そしてAppName.exeを起動。
AppName.exeの終了まで待機し、終了したら
AppName.ini→AppName_CurrentUserName.ini
と上書きコピーする。
こんな感じ。
つまり、対象アプリに切り替えを指示するのではなくて、
こちらが切り替えてしまうアプリ。
つうか説明下手でスマソ、うまく伝わるか不安だ…
0318名無しさん@お腹いっぱい。
02/02/06 20:40ID:???全てのユーザにインストールし直すのが面倒なのは
各ユーザにインストール任せれば良いんだし。
そもそもユーザごとに使いたいアプリは違うだろうし
管理者の好みを押し付けるってのはなぁ。
管理が行き届きにくくなるって欠点はあるけど。
0319名無しさん@お腹いっぱい。
02/02/06 21:40ID:???ド素人がいないとも限らないし。
実際、XPを家族で使ってるとして、インストールや各種設定なんて
恐くてやらせたくない。
これが学校とかだったらなおさらどんなユーザがいるかわからないしなぁ。
っていうか学校でユーザごとに好き勝手にインストールできるような環境だったら
管理どころじゃないよね。
0320名無しさん@お腹いっぱい。
02/02/06 22:15ID:???マルチユーザ環境といえば学校が手っ取り早い例なので。)、
普通、PCごとにリカバリしていくわけで、たいていアプリケーション類は
CドライブのProgram Filesフォルダにインストールされる。
で、ユーザの誰がどのPCを使うかはわからない。(例えて言うなら出席番号順に座るとは限らない)
この場合、UsersアカウントはProgram Filesフォルダには書き込み権限が無いとも考えられる。
こういうとき、アプリケーションの設定はどこに保存するか?
手っ取り早いのはレジストリで、どうしてもINIっていうならApplication Dataフォルダとか。
でもこのアプリケーションを自宅で使うならアプリケーションと同じフォルダに
INIを保存してくれた方が楽。(楽な理由は今まで出し尽くされてきた。)
要するに使う環境によってレジストリ、INI、どっちが便利かってのは
変わってくるんだよね。
だから一番いいのはアプリケーション側がどちらもできるような機能をサポートしてること。
でも作者もめんどうだろうし、作者によって仕様が異なるのも使いにくそう。
だからインターフェイスが統一されて利用するのも簡単なライブラリなんかが
あればいいなと思ったけど、俺にはそんなライブラリを作るスキルは無い!ばか!
0321名無しさん@お腹いっぱい。
02/02/06 23:10ID:???COMコントロールとかはそんな感じで標準化されているね。
0322名無しさん@お腹いっぱい。
02/02/06 23:12ID:???なんかが使えなくな〜る。
0323名無しさん@お腹いっぱい。
02/02/06 23:39ID:???インストール後にも変化するようなINIファイルは、
%USERPROFILE%\Application Data\
%USERPROFILE%\Local Settings\Application Data\
あたりにいれておけば問題なし
0324名無しさん@お腹いっぱい。
02/02/07 01:33ID:???ファーストユーザースイッチと、Terminalクライアントの場合、
同じユーザーが同時にログインして、同時にアクセスすることになるんだけど
大丈夫?
INIが開けませんって落ちるアプリをよく見かけるので・・・。
0325名無しさん@お腹いっぱい。
02/02/07 10:29ID:???標準のプロファイルAPIを使ってる限り問題ないと思うけど。
独自に読み書きしてる場合でも普通は読み書き終わったら閉じるんじゃないの?
落ちるようなアプリはよほど設計がタコなんだろ。
でも%USERPROFILE%の下にini入れるくらいだったらレジストリ使うが。
iniのメリットの大半はexeと同じディレクトリにあることによるものだよね?
■ このスレッドは過去ログ倉庫に格納されています