◀ANSI版開発トップへ
  • 4853 Vista UAC対応
    • 4854 (提案)ファイルによる判別 RE: Vista UAC対応
      • 4855 Re:(提案)ファイルによる判別 RE: Vista UAC対応
      • 4858 Re:(提案)ファイルによる判別 RE: Vista UAC対応
    • 4859 ユーザ設定を共有エリアへ (RE: Vista UAC対応)
      • 4860 Re:ユーザ設定を共有エリアへ (RE: Vista UAC対応)
  • [4853] Vista UAC対応 げんた 2007年05月30日 01:46

    長くなってきたので,まとめました
    http://sakura.qp.land.to/dev/?Feature%2FUAC

    掲示板のコピペとryojiさんに提供していただいたパッチの解析によって仕様をまとめたつもりです.
    表現が適当(こぴぺのまま)だったり誤っていたりする場合は適宜追加・修正してください.

    仕様をまとめた理由は,試験仕様書代わりにするためです(^^)
    こうしておけばすいさんあたりが相対パスで動くかどうかまとめバイナリを使って試してくれるだろうと...
    • [4854] (提案)ファイルによる判別 RE: Vista UAC対応 げんた 2007年05月30日 01:52

      現在のUAC対応パッチではProgram Files配下にあるかどうかでUAC対応の要不要を判定していますが,それに加えて特定のファイルがsakura.exeと同一ディレクトリに存在するかどうかで判定する方法はいかがでしょうか.

      Windowsの管理するところのProgram Files配下に限定していると,例えばC:とD:があってD:に独自にProgram Filesを作ってインストールした場合,そこは勝手なディレクトリなのでユーザ別設定の対象外になりますよね.

      もう1つの理由はインストーラの都合なのですが,ファイルをコピーする・しないで個人別設定を使う・使わないがコントロールできるとインストーラを作るときに設定の1つに含められるので楽です.(XPユーザが個人別設定を使えるようなインストーラを作るとするとスクリプトでディレクトリパスを切り出したりとかなり手間がかかるなと思いまして...)
      • [4855] Re:(提案)ファイルによる判別 RE: Vista UAC対応 ryoji 2007年05月30日 21:34

        ▼ げんたさん
        > 現在のUAC対応パッチではProgram Files配下にあるかどうかでUAC対応の要不要を判定していますが,それに加えて特定のファイルがsakura.exeと同一ディレクトリに存在するかどうかで判定する方法はいかがでしょうか.

        設定フォルダのパス名はどうしましょう?
        現時点では、Program Files下のサブフォルダ名をそのまま持ってきていますが...
        混乱しないよう、ルールを複雑化するのは避けたいですね。

        その「特定のファイル」で%AppData%下のサブフォルダ名を指定できるようにしますか?

        IniFolder=[サブフォルダ名]

        としたとき、%AppData%\[サブフォルダ名]に。
        「特定のファイル」があって、指定が記載されていない場合のデフォルトは
        %AppData%\sakura。

        VistaのProgram Files下インストールでそのファイルが無い場合もやはり
        %AppData%\sakura。
        でも、
        Enable=FALSE
        の明示指定があれば、強制的に設定フォルダ=実行ファイルフォルダとする。
        (VistaでもUACを完全に切るとか、アクセス権設定で特定フォルダのUACを切るようなことが可能といえば、可能なので)

        まだ深くは考えてないですが、こんな感じでは、どうでしょ?
      • [4858] Re:(提案)ファイルによる判別 RE: Vista UAC対応 ryoji 2007年05月31日 22:56

        ▼ げんたさん
        > 現在のUAC対応パッチではProgram Files配下にあるかどうかでUAC対応の要不要を判定していますが,それに加えて特定のファイルがsakura.exeと同一ディレクトリに存在するかどうかで判定する方法はいかがでしょうか.
        >>dev:4857に書いたようにProgram Files配下の特別扱いはやめて、
        sakura.exeと同一ディレクトリに存在する特定のファイルだけを
        マルチユーザ化の判断材料にしようと思います。

        > もう1つの理由はインストーラの都合なのですが,
        インストーラとの兼ね合いもあると思うので、検討してみた仕様を記載します。
        ファイルの記述形式はini、ファイル名はsakura.exe.ini。
        内容は下記の通り。

        MultiUser: マルチユーザ設定にする/しない
        0:マルチユーザ設定にしない(デフォルト)
        ※0指定時はMultiUser以外の指定は無効
        1:マルチユーザ設定にする

        UserRootFolder: 基準となるパスの指定
        0:アプリケーションデータフォルダ(デフォルト) ex. C:\Documents and Settings\<username>\Application Data
        1:ユーザのルートフォルダ ex. C:\Documents and Settings\<username>
        2:ドキュメントフォルダ ex. C:\Documents and Settings\<username>\My Documents
        3:デスクトップフォルダ ex. C:\Documents and Settings\<username>\デスクトップ

        UserSubFolder: サブフォルダ名
        デフォルトはsakura

        ○設定例
        設定ファイル(sakura.ini)をユーザのドキュメントフォルダ下のsakura_settingsサブフォルダに置く場合、
        MultiUser=1
        UserRootFolder=2
        UserSubFolder=sakura_settings
        ⇒ ex. C:\Documents and Settings\<username>\My Documents\sakura_settings\sakura.ini

        といった感じです。
    • [4859] ユーザ設定を共有エリアへ (RE: Vista UAC対応) げんた 2007年06月02日 13:52

      もう1つ気になった点があります.

      複数のsakura.exe をProgram Filesとそれ以外の場所に置きます.
      共有メモリの形式に互換性がある場合には両者は同時に起動でき,管理プロセスを共有します.
      しかし,UAC機能はそれぞれのexeで独自に判定しているため,Program Files配下のsakura.exeはユーザディレクトリを参照し,そうでないsakura.exeはEXEの置かれているパスを参照します.

      ですが,管理プロセスを共有しているのでsakura.iniは先に起動されたものが使われます.

      ユーザディレクトリの場所も共有メモリに格納して,sakura.iniを共有するプロセスは全て同じ振る舞いをする方が自然だと思いますがいかがでしょうか.
      • [4860] Re:ユーザ設定を共有エリアへ (RE: Vista UAC対応) ryoji 2007年06月02日 16:14

        >>dev:4858仕様のパッチを作成してPatchesにUpしました。

        ▼ げんたさん
        > ユーザディレクトリの場所も共有メモリに格納して,sakura.iniを共有するプロセスは全て同じ振る舞いをする方が自然だと思いますがいかがでしょうか.
        これは、自分もプロセスごとに持つのは良くないと思って修正してあります。