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

vista対策

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/11/06(月) 20:41:33
まとめたい
000222006/11/06(月) 20:43:04
2
000332006/11/06(月) 20:43:15
3
000442006/11/06(月) 20:49:04
4
000552006/11/06(月) 22:22:22
見た目はキリ番
頭脳は・・
0006デフォルトの名無しさん2006/11/06(月) 23:12:01
つうか、別にいいんじゃね?とくに対策とかって

とりあえず評価版いれてみれば?
0007デフォルトの名無しさん2006/11/07(火) 01:06:07
最大の対策は24ヶ月ほど入れないことだなw
0008デフォルトの名無しさん2006/11/07(火) 03:01:11
>>1
何かまとめれアホ
0009デフォルトの名無しさん2006/11/07(火) 04:40:45
フォルダ配置が全然変わったから注意

例:C:\Document and SettingsフォルダなくなってC:\User

とか
0010デフォルトの名無しさん2006/11/07(火) 06:09:51
>>9
そのフォルダをじかに参照するソフトは、それはそれで問題あるかも。
ちゃんとやるにはレジストリから実際のフォルダを引っ張ってくるでしょ。
そしてレジストリから引っ張ってくるならその違いは問題になっていないはず。
0011デフォルトの名無しさん2006/11/07(火) 06:33:05
>>10
C:¥Document and Settings フォルダのパスを正式に取得する方法は実はなかったりする。

C:¥Document and Settings¥hoge フォルダの CSIDL あっても
C:¥Document and Settings フォルダの CSIDL はない罠。
0012デフォルトの名無しさん2006/11/07(火) 08:41:36
INIファイルはどこにおけばいいですか?
もうINIはだめですか?
0013デフォルトの名無しさん2006/11/07(火) 10:26:58
>>9
何?もしかしてロングネームや空白使わないよ〜にしよ〜的動きがあるのか?
0014デフォルトの名無しさん2006/11/07(火) 13:19:50
対策?何を対策すると言うの?
ああ、データの位置などか。それは確かに面倒だな。
でも、置換ですぐに対処できると思うが。
0015デフォルトの名無しさん2006/11/07(火) 13:26:18
Document and Settings とかのユーザフォルダなんてOS毎に変わるんだから。
普通はAPIで取ってるよね?
0016デフォルトの名無しさん2006/11/07(火) 16:18:56
>>12
%APPDATA%
にフォルダ作ってそこにini等の設定ファイルを置けばいいのでは。
0017デフォルトの名無しさん2006/11/07(火) 17:52:45
いまどきiniかよ
XMLで書けよぷげらっちょ
0018デフォルトの名無しさん2006/11/07(火) 19:12:17
>>16
ありがとう。
APPDATAはユーザ別にデータ持たせたい場合ですが、ユーザごとに
共通のデータはどこに置いたらいいのでしょうか?
0019デフォルトの名無しさん2006/11/07(火) 20:04:10
>>17
iniの方が書き換えが楽
0020デフォルトの名無しさん2006/11/07(火) 21:10:00
なんでもXMLにすればいいと思ってる学生ですからw
0021デフォルトの名無しさん2006/11/07(火) 21:14:35
>>19
UAC環境下でProgram Files配下のiniを書き換えようとするとマジはまるぞ。
0022デフォルトの名無しさん2006/11/07(火) 21:19:57
>>19
プログラムからの読み取りは、ライブラリが充実しているから、XMLのほうが楽だと思う。
0023デフォルトの名無しさん2006/11/07(火) 23:50:56
俺的には2000→XPの時よりやることが少なかった。
はっきり言って意外だったが助かった。
0024デフォルトの名無しさん2006/11/08(水) 08:19:43
>>18
%ALLUSERSPROFILE%\Application Data
0025デフォルトの名無しさん2006/11/08(水) 11:00:23
XMLなら可変データも持てるしiniより自由度高いし
.netならアクセスも超楽チン
iniなんて終わってる
0026デフォルトの名無しさん2006/11/08(水) 12:52:10
vista対策関係ないからなあ、他でやってけろ
0027デフォルトの名無しさん2006/11/08(水) 16:35:45
もうすぐVistaが出るが…
http://pc8.2ch.net/test/read.cgi/tech/1157349228/l50
0028デフォルトの名無しさん2006/11/08(水) 17:31:22
そっちもこっちも閑散としてるってことは、ようするにほとんど
動いちゃうんだろうな。

それともvista対策って、vistaからできる新機能の使い方の
勉強でもしようかってことなのか?
0029デフォルトの名無しさん2006/11/08(水) 22:41:54
>>24
Vistaでは%SystemDrive%\ProgramDataになっていますが何か。
だからAPIを使えと(ry
# そのAPIすらSHGetKnownFolderPathなんてのが新設されて今後はこっち使えとか
# 言ってるし。もう何を信じたらいいのやら
0030デフォルトの名無しさん2006/11/08(水) 23:24:24
HKLMにRegCreateKeyExでキーを作ろうとすると権限不足で作れない。
しかもERROR_SUCCESSを返してきやがる。
MANIFESTでexe起動時に管理者権限に昇格するダイアログを表示させて
権限を得ればいいらしいけど、エラーくらい正しく返してきやがれorz
0031デフォルトの名無しさん2006/11/09(木) 01:28:22
HKLMへの書き込みに失敗するとエラーダイアログを出しまくったり
インストールに失敗したりする馬鹿なインストーラ対策。
asInvokerなマニフェストでいいから付けておけば権限取得も必要ないし
変な偽装はやめてくれるよ。
0032デフォルトの名無しさん2006/11/09(木) 01:32:52
> 権限取得も必要ないし
あ、ちゃんとエラーを返してくれるはずという意味で
本当に書き込みたいならもちろん権限取得が必要。
0033デフォルトの名無しさん2006/11/09(木) 14:03:05
UACが有効だと、Program files下にインストールした
ファイルをアンインストール(DeleteFile)してもファイル
が消えないです。

こういう場合はどうするのがセオリーでしょうか?
(ユーザー権限はAdminです)

UACを無効にすればひとまず回避できますが、ユーザーに
それをお願いするのもイマイチですし…
0034デフォルトの名無しさん2006/11/09(木) 17:11:03
そのアンインストーラの実行ファイルの名前に
setupかinstallという文字列が入ってると、
昇格ダイアログを出してくれるらしい。
0035デフォルトの名無しさん2006/11/09(木) 17:35:25
vista対策?ああ

//バージョンごとに処理を切り分ける
if(osver == WIN9X)
{
 ...
}
else if(osver == WIN2K || osver == WINXP)
{
 ...
}

ってなってるところをVistaも通るようにする処理だな。




漏れのプログラムこんなの大杉orz
0036デフォルトの名無しさん2006/11/10(金) 19:49:06
1.UACの動作する状況へのインストール(C:\Progran files以下など)
2.メディアから起動するランチャーで実行ファイルを起動すると、UACが働かずに
インストールフォルダにデータなどが生成される。
3.実行ファイルを直接(あるいはショートカットなどから)起動すると、UACが働き
互換性フォルダが生成され、その中にデータなどが生成される。
4.ランチャーで実行ファイルを起動すると、UACが働かないのでインストール
フォルダ内のデータのみを読み込み・更新する。
5.実行ファイルを直接(あるいはショートカットなどから)起動すると、UACが働き
インストールフォルダ・互換性フォルダ両方のデータを参照する。
 同一のファイル名が存在する場合には互換性フォルダ内のファイルが優先される。
新規作成・更新は互換性フォルダにのみ適用


以上転載終わり。
なぁこれどうやって対処したらいいと思う?βの時に散々対応しようとして挫折したんだが。
無理矢理、ランチャーからプログラムの実行ユーザーを偽装しようとしても上手く行かないし。
互換性フォルダ見に行くようにしようとも考えたけど、UAC切ってるユーザーもあること考えるとそれもどうかと思うし。
MSの言うとおりUser下にフォルダ作るのもユーザーの使い勝手からあまりやりたくないんだよねぇ
0037デフォルトの名無しさん2006/11/10(金) 22:01:39
いやー、VistaからはUser\アカウント の下にインストールを
促すよう変更しようかと思ってる。
0038デフォルトの名無しさん2006/11/11(土) 00:25:03
>>33
アンインストーラにmanifest付けて権限を取得させる。
>>34
それはあくまでレガシーなアンインストーラのための救済策で、
スレタイ通り新規にVista対策するならやるべきではない。
0039デフォルトの名無しさん2006/11/11(土) 00:29:15
> やるべきではない。
って言うとアンインストーラのファイル名にsetupとか含めるべきではないと読めちゃうな。
訂正
スレタイ通り新規にVista対策するなら頼るべきではない。
インストーラ検出はグループポリシー等で無効にされている可能性もあるし
64bitアプリでは最初から効かない。
0040デフォルトの名無しさん2006/11/11(土) 01:23:25
>>38
>アンインストーラにmanifest付けて権限を取得させる。

済みませんが、やり方をもう少し詳しく…。
アンインストーラ manifest vista でググってもピンと来ませんでした。
お願いします。
0041デフォルトの名無しさん2006/11/11(土) 02:01:41
requestedExecutionLevel
でググってみそ
0042デフォルトの名無しさん2006/11/11(土) 03:09:47
>>37
プログラムをUser\アカウントに入れるですか(汗
それはそれで一つの解決策ではありますねw

う〜ん、ただある程度大きいソフトだとそこに入れるのも問題あるし
やっぱりvistaではランチャーからの起動は諦めるしかないのかなぁor2
0043デフォルトの名無しさん2006/11/11(土) 03:13:27
ランチャーは自作? 他人が作ったもの?
0044デフォルトの名無しさん2006/11/11(土) 10:47:26
>>41
ありがとうございます。
0045デフォルトの名無しさん2006/11/11(土) 11:58:09
>>43
Quick Launch
0046デフォルトの名無しさん2006/11/11(土) 14:25:29
クイック起動の実体って単なるショートカットじゃなかったっけ?
クイック起動にショートカット放り込んで試してみたけどちゃんとUAC効いて
互換性フォルダを参照したぞ?
0047デフォルトの名無しさん2006/11/11(土) 15:27:05
コピペ元はこれか。
http://idol.bbspink.com/test/read.cgi/hgame/1090858757/822
つまりランチャーってのはautorunで起動されるCD/DVD内のプログラムってことね。
130cmのサポートページによると実行ファイルの名前がsetup.exeだから
http://130cm.jp/support/support.html#07
インストーラ検出によってランチャーが管理者として実行されるので互換性フォルダが
見えなくなるってことでおk? >本物の>>36
0048デフォルトの名無しさん2006/11/12(日) 02:30:52
>>47と仮定して対策を書くと
・ランチャーのファイル名を変えるとかmanifestを付けるとしかしてインストーラとして
 検出されないようにする
・インストーラを別exeに分ける
で何も問題ないと思うが。
> MSの言うとおりUser下にフォルダ作るのもユーザーの使い勝手からあまりやりたく
> ないんだよねぇ
標準ユーザーでUAC切るとProgram Filesの下には書き込めないことも
頭の片隅くらいにはとどめておいてくれ。
0049デフォルトの名無しさん2006/11/12(日) 02:36:58
> 標準ユーザーでUAC切るとProgram Filesの下には書き込めない
管理者として実行されているインストーラからは書き込めるからプログラムは
Program Filesにインストールしてもかまわないけど、
インストール後に実行ファイルから設定を書けるとは限らないってこと。
0050デフォルトの名無しさん2006/11/12(日) 13:46:41
>>47
コピペはそれです。ただそれと同じ事象を6月頃には把握しててそのころにいろいろ実験してて投げちゃってた。
ちょうどその事象のことをそこで見たんで思い出してコピペして聞いて見たって感じです。
事象としては、ランチャーから起動したプログラムはランチャーの実行権限を引き継いでしまうってことですね。
なので、setup.exeから何かプログラムを起動するとsetup権限で起動してしまう。

>>48
マニフェストについては確か上手く行かなかったと思う。
実行時にメッセージが出ちゃうか、呼ばれた方のプログラムが起動出来なかったかだったと思う。
ランチャーの名前を別にしてセットアップを別exeにするのも、確かセットアップの権限が変更されないで呼んでも上手く動かなかったと思う。

ただ調べたのが6月ごろで今のRC版では確かめてないのと当時のテスト結果が見つからないんでもしかすると勘違いで出来るのかも。
あとでもう一度検証してみます。

>標準ユーザーでUAC切るとProgram Filesの下には書き込めないことも
>頭の片隅くらいにはとどめておいてくれ。
まぁそれはXPでもそうだしなぁw
ただユーザーとしてはデータを分散して置かれるのってあまり喜ばしいことじゃ無いと思うんだけどどうなんだろ。
周知徹底が出来て、みんなUser下に置くのが当然と思うようになってればいいんだけど、
結局XPでも浸透しなかったし。浸透しないと使えないけど、使わないから浸透しない。困った物ですねぇ
0051デフォルトの名無しさん2006/11/12(日) 17:14:50
> マニフェストについては確か上手く行かなかったと思う。
うまく動くことはこちらでは確認済み(RC2 Build 5744)。何か大幅に勘違いしてるか
ベータの不具合に当たったと思われ
とりあえずこことか参照。
http://blogs.wankuma.com/jitta/archive/2006/09/26/39667.aspx
あとasInvokerなマニフェストを使ってる実例。
http://kage.monazilla.org/ のインストーラ
> 実行時にメッセージが出ちゃうか、呼ばれた方のプログラムが起動出来なかったかだったと思う。
ちなみにどんなメッセージが出る?

> まぁそれはXPでもそうだしなぁw
XPと違う点としては、マニフェストを付けると互換性フォルダは無効になるので、
asInvokerなマニフェストを付けるとたとえ管理者ユーザーでも(UACが有効なら)
Program Filesには書けなくなる。
だからUsers配下へ設定を書きに行くように変更しない手抜き対応なら
(ランチャから起動される実行ファイルのほうには)マニフェストをつけないほうがいいよ
0052デフォルトの名無しさん2006/11/12(日) 17:26:29
> ランチャーの名前を別にしてセットアップを別exeにするのも、
> 確かセットアップの権限が変更されないで
セットアップのほうはインストーラとして検出されるようにするかrequiredAdministratorな
マニフェストをつけないとだめだよ。
あとセットアップを起動するときはCreateProcessじゃなくてShellExexuteを使わないと
ERROR_ELEVATION_REQUIREDと怒られて起動できない。

まとめると
・ランチャーにはasInvokerなマニフェストをつける
・インストーラにはrequiredAdministratorなマニフェストをつける
・実行ファイルにはマニフェストをつけない
・ランチャーからは互換性フォルダが見えなくなるので注意
■ このスレッドは過去ログ倉庫に格納されています