- 1 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 20:41:33 ]
- まとめたい
- 285 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 08:45:56 ]
- >>278
エラーでたらキャッチして、処理を切り替える訳にはいかんの?
- 286 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 10:08:20 ]
- >282
クリリンのことかぁぁぁぁ!!!
- 287 名前:265 [2007/02/23(金) 11:40:53 ]
- manifestは付けています。
>>285 レスありがとうございます。 printui.dll(もしくはその先)が勝手にエラーのメッセージボックスを 表示してしまうので、それを出したくないんですよぉ。
- 288 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 19:19:46 ]
- 漏れの自作プログラムの中に、ある条件下でレジストリの HKEY_CLASSES_ROOT 配下に書き込みを行うものがある。
そのプログラムが HKEY_CLASSES_ROOT 配下への書き込みを行うまでは、何度起動してもUACのダイアログは 出なかったんだが、一度書き込みを行ってからは毎回ダイアログが出るようになった。 「危険な動作を行うプログラム」ってことをVistaが学習したんだろうな。 じゃあ、その学習内容はどこにあるんだろうかと、レジストリを検索してみたところ、 HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers に記録されていることがわかった。 ここに実行ファイルのフルパス名で作成されている値を削除したら、UACのダイアログは出なくなった。
- 289 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 19:39:49 ]
- というわけで、レジストリ書き込み機能を別の exe に分離して、必要に応じてそっちを
起動するようにすれば、プログラムを起動するたびにUACダイアログが出るような事態は 避けられるんじゃないかと思いついたので、これから検証してみる。
- 290 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 21:47:37 ]
- ホホウ
- 291 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 23:07:12 ]
- この本(mook)どうよ?
ttp://www.amazon.co.jp/dp/4797340681/
- 292 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 05:37:58 ]
- 随分検証に時間掛かるな。
- 293 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 10:37:51 ]
-
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::。::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::。::::::...... ... --─- :::::::::::::::::::: ..::::: . ..:::::::: :::::::::::::::::...... ....:::::::゜::::::::::.. (___ )(___ ) ::::。::::::::::::::::: ゜.:::::::::::: :. .:::::。:::........ . .::::::::::::::::: _ i/ = =ヽi :::::::::::::。::::::::::: . . . ..:::: :::: :::::::::.....:☆彡:::: //[|| 」 ||] ::::::::::゜:::::::::: ...:: ::::: :::::::::::::::::: . . . ..: :::: / ヘ | | ____,ヽ | | :::::::::::.... .... .. .:::::::::::::: ::::::...゜ . .::::::::: /ヽ ノ ヽ__/ ....... . .::::::::::::........ ..:::: :.... .... .. . く / 三三三∠⌒>:.... .... .. .:.... .... .. :.... .... ..:.... .... ..... .... .. .:.... .... .. ..... .... .. ..... ............. .. . ........ ...... :.... . ∧∧ ∧∧ ∧∧ ∧∧ .... .... .. .:.... .... ..... .... .. . ... ..:( )ゝ ( )ゝ( )ゝ( )ゝ無茶しやがって… .......... .... i⌒ / i⌒ / i⌒ / i⌒ / .. ..... ................... .. . ... .. 三 | 三 | 三 | 三 | ... ............. ........... . ..... ... ∪ ∪ ∪ ∪ ∪ ∪ ∪ ∪ ............. ............. .. ........ ... 三三 三三 三三 三三 三三 三三 三三 三三
- 294 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 14:18:08 ]
- >>288 の身に一体何が…。
- 295 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 19:54:15 ]
- >>288
書き込みを行ったあとそのプログラムが終了したとき互換アシスタントが出なかった?
- 296 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 21:26:36 ]
- >291
今の時点で出ている Vista開発本は、英語以外、全て糞。
- 297 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 21:42:14 ]
- >296
英語の場合のお勧めってあります?
- 298 名前:デフォルトの名無しさん [2007/02/26(月) 18:03:32 ]
- 自作のDLLをregsvr32で登録するようなインストーラを
WindowsInstaller(VisualStudio.NET 2003)で作成しています。 UACが有効になっている状態だと、インストールの途中で msiに対しての昇格ダイアログが出てくるのですが、 これを許可してもregsvr32でのレジストリ登録の段階で エラー0x80070005(E_ACCESSDENIED)で弾かれてしまいます (インストーラからは、カスタム動作の「確定」フェーズで regsvr32を呼び出しています)。 DLLにマニフェストを添付してrequestedExecutionLevelを 設定してみてもだめでした(asInvoker、requireAdministratorともに)。 COM登録を含むインストーラは、どのように作成されることを Microsoftは推奨してるのでしょうか。
- 299 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 18:33:05 ]
- >COM登録を含む
M$「だから、COMをドトネトで置き換えろっつーの」
- 300 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 19:38:40 ]
- それ言い出したらこのスレでネタにしてる話のほとんどは
アンマネージなアプリにしか関係ないような
- 301 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 20:17:39 ]
- MSI的にはregsvr32で登録するのは推奨してなかったはず。
- 302 名前:298 mailto:sage [2007/02/26(月) 20:28:53 ]
- >>299-301 様、ご意見ありがとうございます。
なるほど、regsvr32でのCOM登録はVistaでは 遂に切り捨てられたと見た方がよいのですね・・・ しかし、当方の場合は自作DLLですので変更の余地はありますが、 サードパーティーから提供されているCOMコンポーネントに 依存しているアプリケーションを作成しているベンダーは、 全自動でのインストーラを作成できなくなり困りそうですね (WindowsInstaller以外ならその限りではないのかも知れませんが)。 「コマンドプロンプトを管理者として実行してregsvr32を・・・」のような マニュアル書きでの対応になるのでしょうか。
- 303 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 20:34:10 ]
- regsvrで変更されるレジストリを記録して、
registoryテーブルに書くだけでないの?
- 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の仕事は増える、と。
|

|