[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 04/08 16:10 / Filesize : 229 KB / Number-of Response : 990
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

vista対策



1 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 20:41:33 ]
まとめたい

304 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 20:46:06 ]
vsdrfCOMSelfReg?

305 名前:298 mailto:sage [2007/02/26(月) 20:49:48 ]
>>303

regsvr32を使用せず、msiによるレジストリ操作に任せるというわけですか。
確かにその方法ならregsvr32もDLLもコールすることなく
結果的にCOM登録できそうですね。

その方法はまだ試していませんでした、検証してみようと思います。
貴重なご意見ありがとうございました。

しかし、regsvr32の内部仕様に関しては詳しく知らないのですが、
環境によって動的に書き込む内容が変わるなどがあると少しまずいかもですね。
少なくとも、インストールフォルダを参照してDLLのパスを書き換える必要があるため
静的に書き戻すだけ、というわけにはいかないようです。


306 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 21:10:30 ]
msiには、インストールフォルダ、とかの置換規則がいくつかあるよ。

307 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 22:40:26 ]
だからvsdrfCOMSelfReg
セットアッププロジェクトってWindows Installerとは違うの?

308 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 22:41:10 ]
SelfRegも、msiチームはあんまし・・・みたいな話だったなー。

309 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 23:15:03 ]
じゃあXP以上ではReg-Free COMを使うとか

310 名前:298 mailto:sage [2007/02/26(月) 23:15:41 ]
>>304,307 様

vsdrfCOMSelfRegって何のことだかわからなかったのですが、
セットアッププロジェクトに追加したDLLのプロパティで
勝手にregsvr32同等の機能をmsiにしてもらう方法があったのですね・・・

すみません、単に私がmsiに関しての機能を把握していないだけでした。

試してみたところ、問題なく登録することができました。
また、DllRegisterServer/DllUnregisterServer内での処理も
昇格された権限を継承して実行できているようです。

COM登録インストーラのUAC対応は、どうやらこうするのが本筋みたいですね。
というか、msiからregsvr32呼ぶこと自体が間違っていました。


>>308

懸念されている問題は、
ttp://support.microsoft.com/kb/307367/ja
にて記述されているようなことでしょうか。

確かに、上記のアーティクルでは[COM]か[COMRelativePath]が推奨されているようですね。
今は知識不足のため明確な違いがよくわかりませんが、
[COM]/[COMRelativePath]も調べてみて最適なものを採用してみようと思います。

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


311 名前:298 mailto:sage [2007/02/26(月) 23:32:23 ]
>>309

Reg-Free COMというのは知りませんでした。
調べてみたところ、VS2005からの機能のようなので残念ながら
今回は利用できませんが、開発環境をバージョンアップしたときの
選択肢になる可能性として参考にさせていただきます。

ありがとうございます。


312 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 00:32:42 ]
MSが仕様だと言い張るので、Vistaのすばらしい機能を紹介します。
レジストリのHKEY_CURRENT_USERのキーを同一PC上のユーザにコピーする「機能」です。

(条件)
・実行ファイル名に"UPDATA"や"SETUP"などの文字を含む 例)MyUpdate.exe つまり、UACにひっかかるexeであること。
・そのexeにmanifestをつけないこと。あってもいいけど、実行権限を指定しなければok。

(方法)
・そのexeの中で、HKCUのキーを書き込むだけでそのキーが全ユーザにコピーされます。
・MFCアプリなら、CWinApp::GetProfileStringなどで、参照するだけでOK!ナイスすぎ。
 しかも、書き込んだキーだけじゃなく、SetRegistryKeyで設定したグループ以下を
 全部丸ごとコピーしてくれるから、とっても簡単!
 通常は、会社名を設定するから、あなたの会社のソフトをまとめて面倒みてくれます。
 microsoftをSetRegistryKeyにしたら・・・うは〜
・書き込むって言ったけど、RegCreateKeyExをやっても、そのキーが丸ごとコピーされマス!

(ただし)
・すでにキーが設定されていれば、上書きはされません。
 キーが空だった場合のみ,ほかのユーザのHKCUのキーが新規で追加されます。
 でも、普通デフォルト設定はキーを空にするよね。
・コピーする内容がパスだった場合、ご親切にもパスのユーザー名の部分だけ置き換えてくれます。
 たとえば、c:\User\papa\秘密.txt という文字列を書き込んだ場合は、ママのレジストリには
 c:\User\mama\秘密.txt と置き換えてコピーしてくれるんです!開発者のことよく考えてくれるね〜 

このすごい機能は、RedirectHKCUKeysと言うらしいです。
これで、パパのクレジット番号だろうが、パスワードだろうが、ママがいちいち入力しなくても
親切にコピーしてくれるから、すごく便利だね!
一度おためしあれ。



313 名前:312 mailto:sage [2007/02/27(火) 00:43:18 ]
あ、ちょっと間違えました。

実行ファイル名に"UPDATA"や・・・

実行ファイル名に"UPDATE"や・・・


314 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 00:46:21 ]
何が問題なのか全然わからね。
> UACにひっかかるexe
なんだからそのexeが悪意を持ってるって前提ならそもそも何でもやり放題だし
意図せずコピーされるって話なら対応策(の逆)を自分で書いてるし
>・そのexeにmanifestをつけないこと。あってもいいけど、実行権限を指定しなければok。
つーかそもそもインストーラからHKCUに書き込むなというか

315 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 00:50:59 ]
>>312
ひでぇな、これ。

>>314
>>312の最後の部分をよく読め。この問題をすぐに理解できなくても
お前が馬鹿だとは思わないが、プログラマとして情報セキュリティに
関して理解を深めておくことを強く推奨する。

316 名前:312 mailto:sage [2007/02/27(火) 01:03:21 ]
314さんのおっしゃるとおりです。
MSの方も同じことをおっしゃっていました。
「これから」対応するソフトはmanifestをつけるだけでいいから
全然問題ありません。

インストーラからHKCUに書き込むのは確かにヘンです。
でも、アップデートプログラムは・・・?

CDに書いて店頭に並んじゃったCDは、Vista対応じゃないから自己責任ですよね。
ちなみに、ヒマなときに検索したところ、iTunes、Realplayer、DivX Cordecあたりは、
××update.exeというマニフェストを含まないexeがインストールされます。
HKCUに書き込みを行っていないことを願うばかりです。
iTunesは、iPodにCDで入ってますから。
対応OSよく見ないVistaユーザなんていないですよね。

そもそも、exe名の文字列だけで引っかかるというのもね、ちょっと。
そんな恨み言いってもしょうがないんですけど。

317 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 01:05:21 ]
俺も何が問題なのか理解できん。
その仕様を利用してどんな悪さが可能なのか提示キボンヌ。
ファイルのパスだけじゃなくファイル自体もコピーするってんなら、悪用の仕方もいろいろ思いつくんだけど。

318 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 01:07:51 ]
>>317
ポイントは悪用じゃなくて、意図せずに情報が他のユーザに漏れてしまうこと。

319 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 01:15:39 ]
意図せずに、ったって、setup.exeとか言う名前で、
しかも管理者権限をUACで有効にしてるんじゃないの?

320 名前:312 mailto:sage [2007/02/27(火) 01:19:39 ]
ちゃんと書き込みしましょう。
正直、どんな「悪用」ができるかまで考えが及んでません。

ただ、この条件にマッチしてしまう市販ソフトが店頭に並んでしまっているわけです。
先ほど例として挙げたように、iTunesをはじめ、AcrobatReaderなんかも、バックグラウンドで
最新版をチェックするようなアプリには、××update.exeみたいな名前をつけちゃうんです。

で、MFCアプリの場合は、「参照」しただけでキーのコピーが行われてしまうので、
ソフトメーカーの姿勢として、どうやってこれを対処するのか?ってことなんです。

市場に出ているソフトを全回収?その費用は誰が持ってくれるの?
Vista対応って書いてないソフトだからほっとく?
テストした結果、パスワードがコピーされることが確認されました。

我々は、さすがにこの動作はMSが直してくれるだろうと思ってたんですが、
MSの見解として、「仕様」と位置づけられたために、手詰まりなんです。

そこで、この仕様は、本当にこのままで問題ないの?ということを、
高い知識を持った皆様に伺ってみたかったんです。

ちゃかしたような書き込みですみませんでしたが、かなり困ってます。


321 名前:312 mailto:sage [2007/02/27(火) 01:23:10 ]
>>319
管理者権限を設定してあれば、この動作は起こりません。
権限を設定していないXP時代のアプリの場合に発生します。

で、Setupだけだったら問題は少なかったんです。
でもUpdateは、多くのソフトがこの名前を「インストーラ」ではなく、
「最新版チェックツール」につけているんです。

322 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 01:26:23 ]
考えれば考えるほど、問題が出ない気がしてきた。
そもそも秘密文章とかは、パスがわかってもそもそも開けない
アクセス制限のかかった環境におくんじゃないのか



323 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 01:30:54 ]
>>322
秘密文章のパスが書き込まれるだけならおっしゃるとおりです。

しかし、パスワードのような短い文字列は、HKCUに直接書きませんか?
もちろん、文字列をそのまま書き込むようなことはしないと思いますが、
たとえ暗号化してあっても、HKCUにパスワードが記入されていたときには、
自動ログインするよう動作のアプリの場合、ほかのユーザが「ログイン」
できてしまうわけです。

324 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 01:34:20 ]
かつ、管理者権限を持つヒトが実行した、update.exeみたいな
名前のプログラムが、そのHKCUレジストリを参照したとき、だろ?

325 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 01:36:52 ]
うーん。プログラムのアップデートサーバにログイン認証を仕掛けているとき、
アップデータがHKCUにログイン情報を書いていると、しつが管理者以外にも
漏れる、くらいしかシナリオが思い浮かばないな。

326 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 01:38:09 ]
ちょっと考えただけで、例えば、誰かが勝手に作った gmail 関連のツールなんかで
インストール時に gmail のユーザアカウントとパスワードを入力→他のユーザから
メールボックス丸見えw なんて楽しそうなシナリオが満載ですねww

327 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 01:41:48 ]
>>324
そうなんですが・・・

MFCプログラムでは、初期化のときに、このソフトはどのレジストリキー以下を参照するか
設定する流儀になってるんです。
これが、SetRegistryKeyというAPIです。

つまり、初期化のときに、「このアプリは、HKCU\MyCompany 以下に情報を書き込みます」と
設定しておけば、その後はいちいちMyCompanyを指定しなくても、レジストリの読み書きができる
ようになっています。

で、この動作の凶悪なところは、HKCU\MyCompany\MyApp\password というキーを参照しただけで、
SetRegistryKeyで設定したHKCU\MyCompany\以下を丸ごとコピーするのです。

つまり、前回終了したときのWindowの位置を参照しにいっただけで、隣に書いてあったPasswordまで
コピーされます。

MFCの中で、参照の際にSetRegistryKeyで指定した初期位置に対して、RegCreateKeyEx等を
実行してるんじゃないかと推測します。

レジストリの変更をリアルタイムに監視するツールで見てたんですけど、それはもう見事に
丸ごとコピーされました。なかなか壮観は映像でしたよ。

328 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 01:46:29 ]
たしかにログイン情報は危ないかもな。
具体的な例はメールチェッカくらいしか思い浮かばないけど
これはレジストリあたりにパスワードを記録してる可能性高いし
暗号化されてる情報でもコピペすればそのまま使えるだろうから

329 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 01:50:12 ]
>>328
たとえ他に危険がケースがなくともその例だけでもうお腹いっぱいだろ。

330 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 01:52:38 ]
あともう一つ。

作業用フォルダとか、データ保存先フォルダ(これは大した問題じゃないですが)なんかがコピーされると、
アプリが起動しない、とか、「作業用フォルダが見つからないのできどうできない」とか、以前保存しておいた
ファイルがなくなった!(ように見える)とか、セキュリティというレベルでなくても、動作上の深刻な不具合は
たくさん起こりえると思います。

もちろん、異常なレジストリデータが入っていたときの処理を、きちんとアプリに実装していればいいんですけど・・・
こういう動作って、設計の時にはなかなか思いつかないんですよ。検査でも発見されにくいですし。

絶対自分しか書き込みしないと信じて作ると、そうなりますね。

まさか、まさか、OSが他人のキーをコピーするなんて、全く想定してませんでしたから・・・


331 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 02:43:16 ]
>>330
関係無いけど口調が回りくどくてうざい。
もっと普通に書けんのか?
それと、文は簡潔に短く纏めろ。有意義な事が書かれてても駄文だと誰も読まんぞ。

332 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 03:00:36 ]
>>331
外野は黙っててくれませんか?

折角有意義な情報を提供してあげているのだから・・・

もっと真面目に考えて欲しいものです



333 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 03:36:20 ]
なんだコイツ?

334 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 03:37:25 ]
>>332
ここでチマチマとやらずに、IPAなりセキュリティホールメモなりスラドなりにタレ込んで
話大きくしたらいいんじゃね?

335 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 04:12:57 ]
おれはこういう情報も、チマチマ欲しいと思うんだがな
多少なり有意義な情報と思うよ
たしかに文章的には読むのを辞めたくなる文だが…

336 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 05:01:56 ]
>>331
禿同

いくらいい情報でも文章がアレだと台無し。

>>332
折角能力高いのにもったいないですよー

337 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 05:16:37 ]
参考になった。

いろんな意味で。

338 名前:デフォルトの名無しさん mailto:age [2007/02/27(火) 05:42:30 ]
情報漏洩ネタだし、ageてみるテスト。

339 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 06:10:38 ]
Yahooメッセンジャーはパスワードとかをレジストリの
HKEY_CURRENT_USER\Software\yahoojapan以下のどっかに保存してるみたいで
WinXPだとこれを丸ごとコピーすればそのまま別ユーザでも起動できるみたい。
この漏洩話が本当に起きるなら、Vistaで「HKCU\Software\yahoojapan」に
特定条件下でRegCreateKeyをかければ、全ユーザでYahooメッセの情報が共有されるってことなのかな

340 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 06:12:36 ]
>>339
Yahooメッセンジャーって>>312の(条件)に当てはまるところがあんの?

341 名前:340 mailto:sage [2007/02/27(火) 06:13:35 ]
ごめん、よく読んでなかった。

342 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 07:03:47 ]
いやいや、一般ユーザの権限で、他のユーザのヤフーメッセンジャーのパスワードを盗める可能性が>>399によって提示されたのだよ。
もっとも、問題があるのはヤフーメッセのほうだと俺は思うけどな。



343 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 07:23:43 ]
管理者ユーザのパスが漏洩する、であって、一般ユーザが能動的に
奪取は出来ないのでは?

344 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 07:53:48 ]
これについては漏洩がどうとかいうより、これのせいで意図しないのに情報が
全ユーザにコピーされてしまうことで、レジストリにアクセスしたソフトが
変なクレームを受けることになる可能性のほうが重要な気もする

345 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 08:50:39 ]
確かに、自社の製品がこれに該当したら冷汗ものだな。

346 名前:312 mailto:sage [2007/02/27(火) 09:07:14 ]
みなさん、ご意見ありがとうございました。
回りくどい表現ですみませんでした。
最後に、この症状が発生するアプリの作り方だけアップします。

CUpdateApp::InitInstance()
{
//CWinAppを利用して参照するレジストリの最上位を指定します。
SetRegistryKey(_T("Aisoft"));

//HKCU\Software\Aisoft\AU配下にあるTestEntryから文字列を取得します。
CString strTestEnty = GetProfileString(_T("AU"),_T("TestEntry"),_T("TestData"));



347 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 09:07:58 ]
うわ、最悪
途中でアップしてしまった。

もうどうでもいい

348 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 09:16:48 ]
エーアイソフトさん大変だなw

349 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 09:38:45 ]
俺がこの世でもっとも許せないヤツは、
スーパーで清算後に品物を袋詰めした後のカゴをカゴ置き場に戻さないヤツと、
プログラムのコメントにですます調を使うヤツだ。


350 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 09:53:37 ]
今自作のプログラムをいじっていて気づいたんだが、.exeのファイル名だけじゃなく、
製品名やファイルの説明にsetupとかupdateが含まれていてもUACの対象になるのな。


351 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 10:10:35 ]
そこまでしなくてもいいだろうになー

352 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 10:14:26 ]
>>349
ですます調いいじゃん。なぜ駄目なの?



353 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 10:41:09 ]
>>330
この「仕様」はそれとは逆で、HKCUはインストーラやアップデータが
書き込んでくれてるに違いないと決めつけてるレガシーアプリを動かすため。
標準ユーザーがインストーラ起動しても、インストーラが書き込むHKCUは
インストーラが動いてる管理者ユーザーのもので標準ユーザーのHKCUには
(この「仕様」がなければ)書き込まれないから。
Vista対応アプリのインストールを管理者ユーザーでしかテストしないと
ハマる可能性がありそうだ。

354 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 10:53:37 ]
>>346-347
お前、全てにおいて最悪な社員だな・・・

355 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 10:55:10 ]
で、アップデータがHKCUを参照してもそれは有効なHKCUであるとは限らないから、
結論から言えばアップデータもHKCUにさわっちゃダメってこと。
アプリ本体のexeがインストールやアップデート後の初回起動を認識して
HKCUを適切に生成したり更新したりできなくてはならない。

356 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 11:24:59 ]
もうどうでもいいワラタ

357 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 12:30:42 ]
結論:やっぱりレジストリは一切使うな

358 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 12:45:37 ]
AppDataにXMLで設定を保存してるアプリも多いね。

359 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 13:19:18 ]
iniファイルで十分

360 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 13:24:46 ]
iniでは可変長のリストを持ちにくい件について。

361 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 13:26:51 ]
可変長のものは個別に別ファイルで無問題

362 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 13:32:11 ]
>>361
ちょwwwwwwそれはiniでは不十分ってことじゃないのか!?



363 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 13:56:04 ]
独自フォー!マット

364 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 14:08:29 ]
iniって拡張子にしてると、将来何が起きるか判らんから
適当に長い拡張子付けてるな。

どうせ設定・保存はなんか拡張してる間にか独自形式化しちゃったし

365 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 14:16:10 ]
>>357
で、VirtualStoreがらみでハマるわけですな

366 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 14:21:25 ]
つまり、独自フォルダにインストールし
レジストリは使わず、独自形式の設定ファイルを使うアプリが最強ってことですな

367 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 16:49:22 ]
>>365
C:にはインストールできない仕様にする

368 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 16:53:28 ]
どんどん本末転倒の坂を転げ落ちてますな
ちなみにuiAccess="true"はProgra Filesにインストールしないと効果が出ないよ
(おそらくユーザー権限で改竄ができるとダメ)

369 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 16:53:45 ]
Progra Files
mが抜けた

370 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 19:45:08 ]
>>339-341
それってさー、EXEコピって〜UPDATA.EXEとかにリネームして
実行しちゃえば条件に当てはまっちゃうんじゃないの?
別の名前じゃ起動しないとか、インストールしたフォルダからで
ないと起動しないとかならいいだろうけど。

371 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 21:08:30 ]
rename shoot_yourself_in_the_foot.exe update.exe
update.exe

372 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 21:34:25 ]
そもそもsetupやらupdateなんかがファイル名に含まれたらって
条件からして頭悪そうな案だよな。ていうか、やっつけ仕事?



373 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 22:06:09 ]
これって「アプリのデータをバックアップするにはどうするの?」
ってユーザーから聞かれたら
C:\Users\ユーザー名\AppData\Roaming\アプリ名
とかのフォルダの中身をどっかに保存して再インストール時はそれを元の場所に
戻せって言う事になるんだよね?

んでデフォではAppDataフォルダは隠しフォルダで見えないわけで…
おまけにUsersフォルダはエクスプローラでは「ユーザー」とかって見えちゃうわけで、、、
素人相手だとまじで説明とか混乱しそうで大変そうだな。

374 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 22:21:53 ]
AppDataはユーザーに触らせない前提のファイルを置く場所だから
ユーザーが自分でバックアップする必要があるならDocuments配下ですよ

375 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 22:33:37 ]
あー、そかDocumentsの下にアプリ名のフォルダ作ってそこにデータ、と。
ウィンドウの位置とか画面レイアウトとかオプションの類の情報は
レジストリに書きなさいよ、と。
んでAppDataにはユーザーに触らせない前提のファイル…?、と。

ふむ。今までアプリのフォルダに全部つっこんでたから
MS様の流儀に対応しようとすると大変だな。
Documents下のアプリ名フォルダに全部ぶちこむかなぁ


376 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 23:49:42 ]
>>375
Documentsの下に無断でフォルダを作るプログラマは、オレは首を
絞めてやるね。

377 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 23:55:46 ]
俺もDocutemsじゃなくてAppDataが正解だと思うなぁ。

378 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 00:08:06 ]
Documents以下にフォルダを作ってやりたいんですが構いませんねッ!?

  [はい] [インストールのキャンセル]


ってダイアログ出せばいいんですね?

379 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 00:11:11 ]
3大悪質プログラム

1)Cドライブの直下に無断でソフトをインストール
2)Documentsの直下に無断でフォルダを作りそこにデータを保存
3)エクスプローラなどの右クリックメニューに無断で項目を追加

380 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 00:13:45 ]
おお378よ、
Documents以下にフォルダをつくらせないとはなさけない

Documents以下にフォルダをつくってもいいですか?
▽[はい] [いいえ]

381 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 00:25:00 ]
ちょw、落ち着きかけた俺の心を乱すようなことをw

Documentsの下にわけわかんないフォルダを次々に作られるのは確かに
どーかと思うけどその方向がMSの思し召しだろ?たぶん。
AppDataだとバックアップ、リストアの手順を教えるのが面倒な事に
なりそうな予感がする。同様の理由でレジストリはまったく問題外。

つーことでDocumentsの下だな。
「スタートメニュー(?)からドキュメントっての開いてその中のアプリ名の
フォルダをどっかにコピっとけ」で済む。

今までなら「Program Filesの下のアプリのフォルダをどっかにコピっとけ」
って言うだけでプログラムごとバックアップできて良かったんだけどな。
もっと良い案があるなら教えてくれ。まじで。

382 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 00:31:36 ]
よし、じゃぁフォルダを作らずにDocuments直下に
データファイルその他諸々を置く。これで決まり。



383 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 00:36:08 ]
最低だw

384 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 00:59:05 ]
設定のエクスポート/インポート機能を作れば済むんじゃまいか。

385 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 01:05:09 ]
>384
バックアップ、リストアの手順を〜って件についてはそうだね。
ユーザーにアプリケーションが使っているファイルを直接いじらせるのは
ユーザーに書き換えさせるためにiniファイルに固執するのと同じ発想

そして>381の仕事は増える、と。

386 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 01:19:30 ]
Program Filesの代わりにMy Documentsを使えばいいじゃん

387 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 01:26:24 ]
Documentsにアプリごとインストールか。
すげー大技だなw

388 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 01:40:00 ]
それならインストール先はいちおうユーザーが選んだことになるしな
つーかユーザー別インストールするとマジでDocumentsがデフォルトの
インストール先にならなかったっけ?
サポートしてるのはMicrosoftのアプリくらいしかないような気がするけど

389 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 01:42:25 ]
C:\Users\hoge\AppData\Roaming\Fxjxtxu\某アプリ\

の下の階層にさらにAppDataを作ってくれましたよ。
もしかするとどんどん深くなるかもしれない(怖

390 名前:デフォルトの名無しさん [2007/02/28(水) 03:11:19 ]
>>296
早くお奨めの洋書を教えろよ

391 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 05:11:28 ]
>>389
そのうち文字数制限を越えて落ちるから心配するなw
しかし考えてみれば、Program FilesやらAppDataにフォルダ作る時、パス長のチェックなんてしたことないな

392 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 06:07:56 ]
ファイルパスの文字数制限の前に、DOS互換関数が死ぬ罠。



393 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 07:43:41 ]
TCHAR path[MAX_PATH]があふれる話じゃないの?

394 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 08:57:51 ]
MAX_PATHなんて過去の遺物でしょうが。

395 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 09:01:51 ]
>>394
UNICODE版のAPI使わない限り、たとえVISTAでもほとんどの処理が
影響を受けること知ってる?


396 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 09:22:31 ]
シンボリックリンクの展開すらMAX_PATHを超えられない

397 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 09:50:33 ]
これってzipで固めて配布してデスクトップとかに
てきとーに解凍して起動して気に入らなかったらそのフォルダを
ざくっと消せばオケっていう形はもう事実上無理ってこと?

一度起動したらそのフォルダとAppDataとかDocuments配下のアプリ名フォルダを
削除してくださいみたいなことが必要だよね。
おまけにAppDataは隠しフォルダからエクスプローラーの設定を
ごにょごにょしてくださいみたいな。

zip配布はもうやめだな。

398 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 10:16:18 ]
んなーこたーない

399 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 12:31:59 ]
>>296
優れた洋書教えて

400 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 13:04:54 ]
なんか混沌としてきてるんで、俺なりにまとめてみた。
俺はレジストリは嫌いなんで使ってないからファイルに関してのみ。
間違ってたら指摘してくれ。

(1) 新規開発アプリ・まじめなプログラマがVista対応でVer.Upする場合。
* exeにはすべてmanifestをつける(余計な仮想化等をさせない)
* ユーザーデータ・(書き換え要の)設定データはそれなりのディレクトリに置く
* プログラム更新はプログラムを分離し、manifestでUAC昇格させる
* アンインストール時に設定データ等をきれいにお掃除する

(2) 既存アプリを最低限の修正でVistaに対応させたい不真面目なプログラマの場合。
* アプリ.exeにはmanifestをつけ、余計なディレクトリ仮想化やUAC昇格がおこらないようにする
* インストーラ.exeはmanifestでUAC昇格させ、ユーザーデータ・(書き換え要の)設定データを置くディレクトリをインストーラでEveryone-modifyにしてしまう
* プログラム更新があるなら、プログラムのディレクトリもEveryone-modifyにしてしまう。

(3) 既存アプリを全く修正したくない物臭なプログラマの場合。
* ディレクトリの仮想化等でうまくいけば、それでオーケーとする
* ユーザーにProgram Filesでないディレクトリにインストールしてもらう
* ユーザーにディレクトリのセキュリティー設定を変えてもらう
* 「Vistaには対応していません」と言い切る

(4) ユーザーの立場の場合。
* 特に必要がなければVistaにしない
* アプリがVistaに対応してるか、供給元に確認する

ちなみに俺は(2)。
参考:mt.exe(Manifest Tool)で、再コンパイル・リンクなしに既存のexeにmanifestを追加できます。


401 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 13:23:47 ]
設定をサーバー側に置けばいいんだ

402 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 13:53:14 ]
>>397
> デスクトップとか
はユーザープロファイルの下に作られるから無問題。
インストーラがないのにわざわざProgram Filesに展開しようとしたときにのみ
問題が発生する。
個人的には制限ユーザー暮らしが長かったからProgram Filesに展開するというのは
想像の範囲外だったんだがWinXPでは十分あり得たのか
>>400
> 参考:mt.exe(Manifest Tool)で、再コンパイル・リンクなしに既存のexeにmanifestを
> 追加できます。
ただしVS2005にSP1を当てる前のmt.exeを使うと、MS06-075を当てていないWinXPで
とんでもないバグを踏むので要注意。どういうことになるかはWin板のSleipnirスレ
参照。VS2005SP1やWindows SDK付属のmt.exeならたぶん大丈夫。



403 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 15:08:52 ]
見覚えのある症状だと思ったらこれか
support.microsoft.com/default.aspx?scid=kb;ja;921337

404 名前:400 mailto:sage [2007/02/28(水) 15:11:06 ]
>>402
>ただしVS2005にSP1を当てる前のmt.exeを使うと、MS06-075を当てていないWinXPで
>とんでもないバグを踏むので要注意。どういうことになるかはWin板のSleipnirスレ
>参照。VS2005SP1やWindows SDK付属のmt.exeならたぶん大丈夫。
Thanks. 知らなんだ・・・・ 確認してみる。








[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<229KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef