none
UAC有効でHKEY_LOCAL_MACHINEキーへの書き込み RRS feed

  • 質問

  • Windows7,8上で動作するアプリケーションで、一人のアカウントユーザーが
    他のアカウントユーザーの設定にも反映するように修正する要望があり、

    HKEY_LOCAL_MACHINE¥SOFTWAREキーに、設定の保存を行うことにしたのですが、
    UACが有効な場合、方法として

    ShellExecute() もしくは ShellExecuteEx()または、COMのアウトプロセスを、
    親プログラムから起動し、権限の昇格を行う書き込む方法があると思うのですが、

    上記以外に、方法があればご教授ください。


    2013年2月7日 1:14

回答

    • 回答の候補に設定 佐伯玲 2013年2月12日 5:51
    • 回答としてマーク 佐伯玲 2013年2月15日 6:45
    2013年2月7日 2:05
  • インストール時に共通で書き込めるフォルダーなどを用意して、そこに保存するようにすることなど、仕様の見直しも含めて検討してください。
    (レジストリキーの自分たちのソフトウェアのキー以下のアクセス許可を書き換えることも考えられますが、ファイルの方が楽な気もします)

    // 基本的に、こっそり昇格はできませんので、そっちの方向で探すのは骨折り損のくたびれもうけかと。
    // 代行するサービスを作るのもありですが、普通のアプリがやることじゃないですね。(セキュリティリスクになりかねません)

    • 回答の候補に設定 佐伯玲 2013年2月12日 5:51
    • 回答としてマーク 佐伯玲 2013年2月15日 6:45
    2013年2月7日 13:49
    モデレータ
  • 別プログラムとしてそういった設定を行う為の機能を用意するというのは
    Microsoftが出しているUAC関連の文書の中にも出てきますが、
    これは本体のプログラムに組み込んでしまうと起動する度にUACの確認ダイアログが出るので
    本当に必要な時だけ確認ダイアログを出すようにする為の方法だったと思います。

    Azuleanさんも書かれていますが、確認ダイアログを出さずに行うのではなくて
    出す場面をコントロールするというのであればよいと思うのですが、
    文面からはそこまで読み取れないのでどちらを望んでいるのだろうと思いました。

    UACの事を気にしないようにしたいなら書込み権限があるところに保存するようにするか、
    それ専用のフォルダを作成して書き込み権限を設定するかだと思います。
    設定情報を保存する方法はレジストリだけではありませんし、
    .NETの環境ではXMLファイルに設定を保存する方向ですし。


    解決した時は、参考になったレスポンスの所にある[回答としてマーク]ボタンをクリックしてスレッドを締めましょう。

    • 回答の候補に設定 佐伯玲 2013年2月12日 5:51
    • 回答としてマーク 佐伯玲 2013年2月15日 6:45
    2013年2月8日 0:22

すべての返信

    • 回答の候補に設定 佐伯玲 2013年2月12日 5:51
    • 回答としてマーク 佐伯玲 2013年2月15日 6:45
    2013年2月7日 2:05
  • インストール時に共通で書き込めるフォルダーなどを用意して、そこに保存するようにすることなど、仕様の見直しも含めて検討してください。
    (レジストリキーの自分たちのソフトウェアのキー以下のアクセス許可を書き換えることも考えられますが、ファイルの方が楽な気もします)

    // 基本的に、こっそり昇格はできませんので、そっちの方向で探すのは骨折り損のくたびれもうけかと。
    // 代行するサービスを作るのもありですが、普通のアプリがやることじゃないですね。(セキュリティリスクになりかねません)

    • 回答の候補に設定 佐伯玲 2013年2月12日 5:51
    • 回答としてマーク 佐伯玲 2013年2月15日 6:45
    2013年2月7日 13:49
    モデレータ
  • 別プログラムとしてそういった設定を行う為の機能を用意するというのは
    Microsoftが出しているUAC関連の文書の中にも出てきますが、
    これは本体のプログラムに組み込んでしまうと起動する度にUACの確認ダイアログが出るので
    本当に必要な時だけ確認ダイアログを出すようにする為の方法だったと思います。

    Azuleanさんも書かれていますが、確認ダイアログを出さずに行うのではなくて
    出す場面をコントロールするというのであればよいと思うのですが、
    文面からはそこまで読み取れないのでどちらを望んでいるのだろうと思いました。

    UACの事を気にしないようにしたいなら書込み権限があるところに保存するようにするか、
    それ専用のフォルダを作成して書き込み権限を設定するかだと思います。
    設定情報を保存する方法はレジストリだけではありませんし、
    .NETの環境ではXMLファイルに設定を保存する方向ですし。


    解決した時は、参考になったレスポンスの所にある[回答としてマーク]ボタンをクリックしてスレッドを締めましょう。

    • 回答の候補に設定 佐伯玲 2013年2月12日 5:51
    • 回答としてマーク 佐伯玲 2013年2月15日 6:45
    2013年2月8日 0:22
  • こんにちは、OTAKA さん
    フォーラムオペレータの佐伯 玲 です。

    みなさんからお寄せいただいた情報はご確認いただけましたでしょうか?
    参考になる情報だと思われたので私のほうで勝手ながら「回答としてマーク」とさせて頂きました。

    ご確認いただきご不明な点等ありましたら引き続きこちらのスレッドをご活用くださいませ。


    宜しくお願いいたします。
    __________________________
    日本マイクロソフト株式会社 フォーラム オペレータ 佐伯 玲

    2013年2月15日 6:45