トップページ⇒tech
1001コメント301KB

vista対策

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/11/06(月) 20:41:33
まとめたい
0331デフォルトの名無しさん2007/02/27(火) 02:43:16
>>330
関係無いけど口調が回りくどくてうざい。
もっと普通に書けんのか?
それと、文は簡潔に短く纏めろ。有意義な事が書かれてても駄文だと誰も読まんぞ。
0332デフォルトの名無しさん2007/02/27(火) 03:00:36
>>331
外野は黙っててくれませんか?

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

もっと真面目に考えて欲しいものです
0333デフォルトの名無しさん2007/02/27(火) 03:36:20
なんだコイツ?
0334デフォルトの名無しさん2007/02/27(火) 03:37:25
>>332
ここでチマチマとやらずに、IPAなりセキュリティホールメモなりスラドなりにタレ込んで
話大きくしたらいいんじゃね?
0335デフォルトの名無しさん2007/02/27(火) 04:12:57
おれはこういう情報も、チマチマ欲しいと思うんだがな
多少なり有意義な情報と思うよ
たしかに文章的には読むのを辞めたくなる文だが…
0336デフォルトの名無しさん2007/02/27(火) 05:01:56
>>331
禿同

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

>>332
折角能力高いのにもったいないですよー
0337デフォルトの名無しさん2007/02/27(火) 05:16:37
参考になった。

いろんな意味で。
0338デフォルトの名無しさん2007/02/27(火) 05:42:30
情報漏洩ネタだし、ageてみるテスト。
0339デフォルトの名無しさん2007/02/27(火) 06:10:38
Yahooメッセンジャーはパスワードとかをレジストリの
HKEY_CURRENT_USER\Software\yahoojapan以下のどっかに保存してるみたいで
WinXPだとこれを丸ごとコピーすればそのまま別ユーザでも起動できるみたい。
この漏洩話が本当に起きるなら、Vistaで「HKCU\Software\yahoojapan」に
特定条件下でRegCreateKeyをかければ、全ユーザでYahooメッセの情報が共有されるってことなのかな
0340デフォルトの名無しさん2007/02/27(火) 06:12:36
>>339
Yahooメッセンジャーって>>312の(条件)に当てはまるところがあんの?
03413402007/02/27(火) 06:13:35
ごめん、よく読んでなかった。
0342デフォルトの名無しさん2007/02/27(火) 07:03:47
いやいや、一般ユーザの権限で、他のユーザのヤフーメッセンジャーのパスワードを盗める可能性が>>399によって提示されたのだよ。
もっとも、問題があるのはヤフーメッセのほうだと俺は思うけどな。
0343デフォルトの名無しさん2007/02/27(火) 07:23:43
管理者ユーザのパスが漏洩する、であって、一般ユーザが能動的に
奪取は出来ないのでは?
0344デフォルトの名無しさん2007/02/27(火) 07:53:48
これについては漏洩がどうとかいうより、これのせいで意図しないのに情報が
全ユーザにコピーされてしまうことで、レジストリにアクセスしたソフトが
変なクレームを受けることになる可能性のほうが重要な気もする
0345デフォルトの名無しさん2007/02/27(火) 08:50:39
確かに、自社の製品がこれに該当したら冷汗ものだな。
03463122007/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"));

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

もうどうでもいい
0348デフォルトの名無しさん2007/02/27(火) 09:16:48
エーアイソフトさん大変だなw
0349デフォルトの名無しさん2007/02/27(火) 09:38:45
俺がこの世でもっとも許せないヤツは、
スーパーで清算後に品物を袋詰めした後のカゴをカゴ置き場に戻さないヤツと、
プログラムのコメントにですます調を使うヤツだ。
0350デフォルトの名無しさん2007/02/27(火) 09:53:37
今自作のプログラムをいじっていて気づいたんだが、.exeのファイル名だけじゃなく、
製品名やファイルの説明にsetupとかupdateが含まれていてもUACの対象になるのな。
0351デフォルトの名無しさん2007/02/27(火) 10:10:35
そこまでしなくてもいいだろうになー
0352デフォルトの名無しさん2007/02/27(火) 10:14:26
>>349
ですます調いいじゃん。なぜ駄目なの?
0353デフォルトの名無しさん2007/02/27(火) 10:41:09
>>330
この「仕様」はそれとは逆で、HKCUはインストーラやアップデータが
書き込んでくれてるに違いないと決めつけてるレガシーアプリを動かすため。
標準ユーザーがインストーラ起動しても、インストーラが書き込むHKCUは
インストーラが動いてる管理者ユーザーのもので標準ユーザーのHKCUには
(この「仕様」がなければ)書き込まれないから。
Vista対応アプリのインストールを管理者ユーザーでしかテストしないと
ハマる可能性がありそうだ。
0354デフォルトの名無しさん2007/02/27(火) 10:53:37
>>346-347
お前、全てにおいて最悪な社員だな・・・
0355デフォルトの名無しさん2007/02/27(火) 10:55:10
で、アップデータがHKCUを参照してもそれは有効なHKCUであるとは限らないから、
結論から言えばアップデータもHKCUにさわっちゃダメってこと。
アプリ本体のexeがインストールやアップデート後の初回起動を認識して
HKCUを適切に生成したり更新したりできなくてはならない。
0356デフォルトの名無しさん2007/02/27(火) 11:24:59
もうどうでもいいワラタ
0357デフォルトの名無しさん2007/02/27(火) 12:30:42
結論:やっぱりレジストリは一切使うな
0358デフォルトの名無しさん2007/02/27(火) 12:45:37
AppDataにXMLで設定を保存してるアプリも多いね。
0359デフォルトの名無しさん2007/02/27(火) 13:19:18
iniファイルで十分
0360デフォルトの名無しさん2007/02/27(火) 13:24:46
iniでは可変長のリストを持ちにくい件について。
0361デフォルトの名無しさん2007/02/27(火) 13:26:51
可変長のものは個別に別ファイルで無問題
0362デフォルトの名無しさん2007/02/27(火) 13:32:11
>>361
ちょwwwwwwそれはiniでは不十分ってことじゃないのか!?
0363デフォルトの名無しさん2007/02/27(火) 13:56:04
独自フォー!マット
0364デフォルトの名無しさん2007/02/27(火) 14:08:29
iniって拡張子にしてると、将来何が起きるか判らんから
適当に長い拡張子付けてるな。

どうせ設定・保存はなんか拡張してる間にか独自形式化しちゃったし
0365デフォルトの名無しさん2007/02/27(火) 14:16:10
>>357
で、VirtualStoreがらみでハマるわけですな
0366デフォルトの名無しさん2007/02/27(火) 14:21:25
つまり、独自フォルダにインストールし
レジストリは使わず、独自形式の設定ファイルを使うアプリが最強ってことですな
0367デフォルトの名無しさん2007/02/27(火) 16:49:22
>>365
C:にはインストールできない仕様にする
0368デフォルトの名無しさん2007/02/27(火) 16:53:28
どんどん本末転倒の坂を転げ落ちてますな
ちなみにuiAccess="true"はProgra Filesにインストールしないと効果が出ないよ
(おそらくユーザー権限で改竄ができるとダメ)
0369デフォルトの名無しさん2007/02/27(火) 16:53:45
Progra Files
mが抜けた
0370デフォルトの名無しさん2007/02/27(火) 19:45:08
>>339-341
それってさー、EXEコピって〜UPDATA.EXEとかにリネームして
実行しちゃえば条件に当てはまっちゃうんじゃないの?
別の名前じゃ起動しないとか、インストールしたフォルダからで
ないと起動しないとかならいいだろうけど。
0371デフォルトの名無しさん2007/02/27(火) 21:08:30
rename shoot_yourself_in_the_foot.exe update.exe
update.exe
0372デフォルトの名無しさん2007/02/27(火) 21:34:25
そもそもsetupやらupdateなんかがファイル名に含まれたらって
条件からして頭悪そうな案だよな。ていうか、やっつけ仕事?
0373デフォルトの名無しさん2007/02/27(火) 22:06:09
これって「アプリのデータをバックアップするにはどうするの?」
ってユーザーから聞かれたら
C:\Users\ユーザー名\AppData\Roaming\アプリ名
とかのフォルダの中身をどっかに保存して再インストール時はそれを元の場所に
戻せって言う事になるんだよね?

んでデフォではAppDataフォルダは隠しフォルダで見えないわけで…
おまけにUsersフォルダはエクスプローラでは「ユーザー」とかって見えちゃうわけで、、、
素人相手だとまじで説明とか混乱しそうで大変そうだな。
0374デフォルトの名無しさん2007/02/27(火) 22:21:53
AppDataはユーザーに触らせない前提のファイルを置く場所だから
ユーザーが自分でバックアップする必要があるならDocuments配下ですよ
0375デフォルトの名無しさん2007/02/27(火) 22:33:37
あー、そかDocumentsの下にアプリ名のフォルダ作ってそこにデータ、と。
ウィンドウの位置とか画面レイアウトとかオプションの類の情報は
レジストリに書きなさいよ、と。
んでAppDataにはユーザーに触らせない前提のファイル…?、と。

ふむ。今までアプリのフォルダに全部つっこんでたから
MS様の流儀に対応しようとすると大変だな。
Documents下のアプリ名フォルダに全部ぶちこむかなぁ
0376デフォルトの名無しさん2007/02/27(火) 23:49:42
>>375
Documentsの下に無断でフォルダを作るプログラマは、オレは首を
絞めてやるね。
0377デフォルトの名無しさん2007/02/27(火) 23:55:46
俺もDocutemsじゃなくてAppDataが正解だと思うなぁ。
0378デフォルトの名無しさん2007/02/28(水) 00:08:06
Documents以下にフォルダを作ってやりたいんですが構いませんねッ!?

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


ってダイアログ出せばいいんですね?
0379デフォルトの名無しさん2007/02/28(水) 00:11:11
3大悪質プログラム

1)Cドライブの直下に無断でソフトをインストール
2)Documentsの直下に無断でフォルダを作りそこにデータを保存
3)エクスプローラなどの右クリックメニューに無断で項目を追加
0380デフォルトの名無しさん2007/02/28(水) 00:13:45
おお378よ、
Documents以下にフォルダをつくらせないとはなさけない

Documents以下にフォルダをつくってもいいですか?
▽[はい] [いいえ]
0381デフォルトの名無しさん2007/02/28(水) 00:25:00
ちょw、落ち着きかけた俺の心を乱すようなことをw

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

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

今までなら「Program Filesの下のアプリのフォルダをどっかにコピっとけ」
って言うだけでプログラムごとバックアップできて良かったんだけどな。
もっと良い案があるなら教えてくれ。まじで。
0382デフォルトの名無しさん2007/02/28(水) 00:31:36
よし、じゃぁフォルダを作らずにDocuments直下に
データファイルその他諸々を置く。これで決まり。
0383デフォルトの名無しさん2007/02/28(水) 00:36:08
最低だw
0384デフォルトの名無しさん2007/02/28(水) 00:59:05
設定のエクスポート/インポート機能を作れば済むんじゃまいか。
0385デフォルトの名無しさん2007/02/28(水) 01:05:09
>384
バックアップ、リストアの手順を〜って件についてはそうだね。
ユーザーにアプリケーションが使っているファイルを直接いじらせるのは
ユーザーに書き換えさせるためにiniファイルに固執するのと同じ発想

そして>381の仕事は増える、と。
0386デフォルトの名無しさん2007/02/28(水) 01:19:30
Program Filesの代わりにMy Documentsを使えばいいじゃん
0387デフォルトの名無しさん2007/02/28(水) 01:26:24
Documentsにアプリごとインストールか。
すげー大技だなw
0388デフォルトの名無しさん2007/02/28(水) 01:40:00
それならインストール先はいちおうユーザーが選んだことになるしな
つーかユーザー別インストールするとマジでDocumentsがデフォルトの
インストール先にならなかったっけ?
サポートしてるのはMicrosoftのアプリくらいしかないような気がするけど
0389デフォルトの名無しさん2007/02/28(水) 01:42:25
C:\Users\hoge\AppData\Roaming\Fxjxtxu\某アプリ\

の下の階層にさらにAppDataを作ってくれましたよ。
もしかするとどんどん深くなるかもしれない(怖
0390デフォルトの名無しさん2007/02/28(水) 03:11:19
>>296
早くお奨めの洋書を教えろよ
0391デフォルトの名無しさん2007/02/28(水) 05:11:28
>>389
そのうち文字数制限を越えて落ちるから心配するなw
しかし考えてみれば、Program FilesやらAppDataにフォルダ作る時、パス長のチェックなんてしたことないな
0392デフォルトの名無しさん2007/02/28(水) 06:07:56
ファイルパスの文字数制限の前に、DOS互換関数が死ぬ罠。
0393デフォルトの名無しさん2007/02/28(水) 07:43:41
TCHAR path[MAX_PATH]があふれる話じゃないの?
0394デフォルトの名無しさん2007/02/28(水) 08:57:51
MAX_PATHなんて過去の遺物でしょうが。
0395デフォルトの名無しさん2007/02/28(水) 09:01:51
>>394
UNICODE版のAPI使わない限り、たとえVISTAでもほとんどの処理が
影響を受けること知ってる?
0396デフォルトの名無しさん2007/02/28(水) 09:22:31
シンボリックリンクの展開すらMAX_PATHを超えられない
0397デフォルトの名無しさん2007/02/28(水) 09:50:33
これってzipで固めて配布してデスクトップとかに
てきとーに解凍して起動して気に入らなかったらそのフォルダを
ざくっと消せばオケっていう形はもう事実上無理ってこと?

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

zip配布はもうやめだな。
0398デフォルトの名無しさん2007/02/28(水) 10:16:18
んなーこたーない
0399デフォルトの名無しさん2007/02/28(水) 12:31:59
>>296
優れた洋書教えて
0400デフォルトの名無しさん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を追加できます。
0401デフォルトの名無しさん2007/02/28(水) 13:23:47
設定をサーバー側に置けばいいんだ
0402デフォルトの名無しさん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ならたぶん大丈夫。
0403デフォルトの名無しさん2007/02/28(水) 15:08:52
見覚えのある症状だと思ったらこれか
http://support.microsoft.com/default.aspx?scid=kb;ja;921337
04044002007/02/28(水) 15:11:06
>>402
>ただしVS2005にSP1を当てる前のmt.exeを使うと、MS06-075を当てていないWinXPで
>とんでもないバグを踏むので要注意。どういうことになるかはWin板のSleipnirスレ
>参照。VS2005SP1やWindows SDK付属のmt.exeならたぶん大丈夫。
Thanks. 知らなんだ・・・・ 確認してみる。

0405デフォルトの名無しさん2007/03/01(木) 15:29:49
>>296
じゃあ、英語の良本教えて
0406デフォルトの名無しさん2007/03/01(木) 21:31:21
>>296は背伸びしたかったんだよ。
許してやれ。
0407デフォルトの名無しさん2007/03/02(金) 02:25:02
>>406
でも、真面目に英語の良本を知りたいのですよ。
0408デフォルトの名無しさん2007/03/02(金) 02:33:02
>>407
メリケンのアマゾンでランキングみればいいだろ
0409デフォルトの名無しさん2007/03/02(金) 02:52:47
>>408
どこの文化圏であろうと上位にくるのは必然的に初級者向けの
本にならないか? どこのどの分野であろうと一番多いのは
初級者の層になるだろうからな。
0410デフォルトの名無しさん2007/03/05(月) 02:02:30
>>296
そろそろ英語の良書を教えて下さいよ
0411デフォルトの名無しさん2007/03/05(月) 20:58:12
296じゃないけど、英語でも
ttp://www.amazon.co.jp/exec/obidos/ASIN/0072262842/
あたりしかないんかなぁ?向こうでも書籍は先細りなんだろうか。
0412デフォルトの名無しさん2007/03/06(火) 16:14:45
>>411
って「今の時点で出て」ないじゃん!
0413デフォルトの名無しさん2007/03/06(火) 22:36:45
VistaだとImmGetConversionListが使えないため、このAPIを使用したプログラムは平仮名取得ができない


Re: imm32 を使ったプログラムの互換性について
http://forums.microsoft.com/TechNet-JA/ShowPost.aspx?PostID=1256162&SiteID=36
0414デフォルトの名無しさん2007/03/10(土) 00:15:29
XP以前では、winsock2のラッパーDLLを作ってアプリケーションの
ルートディレクトリにws2_32.dllという名前で配置しておくと
アプリがロードしてくれたので、その仕組みを使ってパケットの
ログなんかを取ってたりしてたんですが、vistaになったら
アプリケーションルートのDLLを読み込まなくなってしまったようです。

VistaでシステムDLLのラッパーDLLを作りたい場合はどうすればいいんですかね?
0415デフォルトの名無しさん2007/03/10(土) 00:35:19
>>414
manifest 書く。
ttp://d.hatena.ne.jp/NyaRuRu/20060711#p1
0416デフォルトの名無しさん2007/03/10(土) 01:07:16
だめだ、KB921337にある通りにマニフェストを組み込んでも、
素のXpでほぼ100%リセットが掛かる。 たま〜に起動しても
そのまま終了してすぐに再度実行するとやっぱりリセット・・・orz
mt.exeも >>402 を見てVS2005SP1のとWinSDKのと試したけど関係なさげ。

マニフェストの無いEXEと、Vista用のマニフェストの入ったEXEを別に用意するか・・・
0417デフォルトの名無しさん2007/03/10(土) 02:24:56
>>413
それは間違いだった。すでにそのリンク先でもフォローされてるけど。
http://d.hatena.ne.jp/NyaRuRu/20070307/p1
IMM32で書かれてたプログラムをTSFベースで書き換えとかいくら何でも
互換性なさ過ぎとは思ってたんだが
>>416
Sleipnie 2.5.9も同じ罠にはまってた。
Sleipnie 2.5.10のmanifestを見ればどうすればいいかわかる
0418デフォルトの名無しさん2007/03/10(土) 14:58:55
リンク先のはImmGetCandidateListについて書かれているけど、
ImmGetConversionListはやっぱり動かないんじゃ?

IMM32互換性情報.docにも「サポートされません」とはっきり書かれているし。
0419デフォルトの名無しさん2007/03/11(日) 00:48:30
>>296
今買える英語の良書、見つかった?
0420デフォルトの名無しさん2007/03/11(日) 00:58:57
お父さんの入れ歯めっかった?
0421デフォルトの名無しさん2007/03/11(日) 01:29:08
>419
ペゾルトの上巻でも買えば?
0422デフォルトの名無しさん2007/03/11(日) 22:15:57
>>421
それは本当にvista対応ですか?
0423デフォルトの名無しさん2007/03/11(日) 22:39:08
というかペゾルトは日本語訳もされてるのに>>296は明らかにおかしいだろ
0424デフォルトの名無しさん2007/03/12(月) 11:33:20
Vistaで仕様が変わったり廃止されたAPIを使ってるかどうか
チェックするプログラムってないの?

レジストリとかファイル関連はすべて影響するから
あまりに大杉て使えないかも知れないけど。
0425デフォルトの名無しさん2007/03/12(月) 13:54:17
ペゾルトの本はいっぱいありすぎて、どれを指しているのかが分からんのだが。
0426デフォルトの名無しさん2007/03/12(月) 19:57:02
>422
APPLICATION=CODE+MARKUP
だろ。
0427デフォルトの名無しさん2007/03/12(月) 21:05:18
>>424
Microsoft自身が何か出してたぞ
0428デフォルトの名無しさん2007/03/12(月) 22:52:18
>424


ACTってやつかな?
ttp://technet.microsoft.com/en-us/windowsvista/aa905102.aspx
0429デフォルトの名無しさん2007/03/13(火) 02:59:23
>>426
うーん、WPFの解説か。
Win32の良書が知りたいな。
0430デフォルトの名無しさん2007/03/13(火) 11:26:03
>429
ちったぁ、自分で調べろ。
■ このスレッドは過去ログ倉庫に格納されています