「現在のユーザのみのインストールしているという前提のアプリ」と「All Users」は相容れませんので最悪、「方法はない」となるかもしれません。
仮に何とか実現できたとしても、将来の Windows でトラブルが起きてもあなた方の責任となるので、要件や仕様の見直し(インストール時ではなく、初回起動時に移すなど)をおすすめします。
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
Windowsアプリ開発の皆様へ
Visual Studioでアプリを開発しいます。
アプリのインストーラは、SetupProjectを使い、msiにパッキングしています。
このインストーラで、comitイベントで、アプリに必要なレジストリ情報を収集し、設定を行っています。
HKEY_LOCAL_MACHINEへのアクセスは、問題なく行えますが、
HKEY_CURRENT_USERのレジストリに対しては、正しくアクセスできません。
インストールを実行しているユーザは、管理者権限付きユーザです。
このユーザのHKEY_CURRENT_USERのレジストリを読みだそうとしても、
HKEY_USERS.DEFAULTがマップされているようです。
インストーラから、HKEY_CURRENT_USERを正しく認識させる方法はありますか?
教えてください。
Reiji Tanaka
ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。
「現在のユーザのみのインストールしているという前提のアプリ」と「All Users」は相容れませんので最悪、「方法はない」となるかもしれません。
仮に何とか実現できたとしても、将来の Windows でトラブルが起きてもあなた方の責任となるので、要件や仕様の見直し(インストール時ではなく、初回起動時に移すなど)をおすすめします。
コメントありがとうございます。
ご助言のとおりだと思います.
私は、インストーラを起動して、管理者権限へ昇格する時(msiのサービスでInstall時)にもインストーラを起動したユーザが権限昇格しているだけだと、勝手に思っていた次第です。
MSIのインストーラでPer User/AllUserへと2つのインストールがありますが、現在は、AllUserを行っているために、HKCUが、HKEY_USERS.DEFALUTがHLCUにマップされているように見えます。
試していませんが、PerUserのInstallであれば、HKCUは、インストーラを起動したユーザのままとしてアクセスできるのかもしれませんが、そこまで調べていません。
セキュリティ上の課題もあるので、インスール後の実行時に対処を実装する方向で考えてみます。
もし、上記のあたりで情報がありましたら、コメントいただければ助かります。
ご助言ありがとうございました。
コメントありがとうございます。
現在のユーザのみのインストールしているという前提のアプリです。
値は、読込みのみで、書き込みの意図はありません。
あくまで、現在のHKCU以下に設定されている状況を参照したいという意図で質問させていただいています。
インストール後に、レジストリを調整することで実行時の対応も可能ですが、インストール時点でHKCUの状況をもとに設定してしまうと、何かと都合がよいので、その方法を探っておりました。
管理者モードへの昇格で、管理者権限になるだけかと思っていましたが、HKCUへのアクセス先が変わるということを知らなかったことが間違いのもとでした。
何か、参考になる情報がありましたら、コメントいただけると助かります。
Reiji Tanaka
全ユーザー対象のインストーラー(管理者昇格するもの)で HKCU を参照するという考えが誤りです。
そのマシンには複数のユーザーが存在しうるわけですし、ドメイン環境では別のドメインユーザーがサインインするかもしれません。
基本的には、HKCU を参照しないといけない設計・仕様自体を再考してください。
現在のユーザーのみインストールとして設計しているなら、問題はないでしょうが、C:\Windows や HKLM などには書き込めませんので、そのつもりで…。
まず、この手の開発者向けの質問はここではなく、MSDN フォーラム にお願いします。 https://social.msdn.microsoft.com/Forums/ja-JP/home 開発者からの有用なアドバイスが貰えるでしょう。このMicrosoft コミュニティは、エンドユーザーが情報交換する場です。
それはさておき HKEY_CURRENT_USERのレジストリは個人用レジストリなので、匿名性が高い動作をするMSIインストーラからはアクセス出来なかったのでは無いかと思います。(うろ覚え)
余計なお世話かも知れませんが、個人用レジストリを使う考え方として、アプリのインストール時にインストーラが「ある特定個人向けに」設定するのではなく、インストール済アプリを「特定個人」が実行した時に初めて、その実行したアプリが「特定個人向けに」初期設定するという動作をするべきだと思うのですが、いかがでしょう。