61

アプリケーションデータを保存するためにレジストリを使用するべきではないことはわかっていますが、レガシーアプリケーションを更新する際に(そして最小限の変更を行いたい場合)、管理者以外が使用できるレジストリハイブはどれですか?

管理者権限なし ですべてHKEY_CURRENT_USER(現在アクセスしているアプリケーション)にアクセスできますか?HKEY_LOCAL_MACHINE

4

2 に答える 2

97

通常、管理者以外のユーザーは、レジストリに対して次のアクセス権を持っています。

読み取り/書き込み:

  • HKEY_CURRENT_USER

読み取り専用:

  • HKEY_LOCAL_MACHINE
  • HKEY_CLASSES_ROOT(これは への単なるリンクですHKEY_LOCAL_MACHINE\Software\Classes)

これらのアクセス許可の一部をキーごとに変更することは可能ですが、非常にまれです。それについて心配する必要はありません。

目的のために、アプリケーションは設定と構成を に書き込む必要がありますHKEY_CURRENT_USER。正規の場所は、HKEY_CURRENT_USER\Software\YourCompany\YourProduct\

では、(すべてのユーザーに対して) グローバルな設定を潜在的に保持できますHKEY_LOCAL_MACHINE。これを行う必要があることは非常にまれであり、避けるべきです。問題は、すべてのユーザーがそれらを「読み取る」ことができますが、管理者 (または拡張により、セットアップ/インストール プログラム) のみがそれらを「設定」できることです。

Program filesその他の一般的な問題の原因: アプリケーションはまたはWindowsディレクトリ内のどこにも書き込みを行うべきではありません。ファイルに書き込む必要がある場合は、いくつかのオプションがあります。それらすべてを説明すると、より長い議論になります。%USERPROFILE%すべてのオプションは、問題のユーザーのサブフォルダーまたは別のフォルダーに書き込むことになります。

最後に、アプリケーションはHKEY_CURRENT_CONFIG. このハイブには、アプリケーションの 99.9999% が参照する必要のないハードウェア構成、サービス構成、およびその他の項目が保持されます (たとえば、現在のプラグ アンド プレイ デバイス リストが保持されます)。そこから何かが必要な場合、ほとんどの情報は、他の場所でサポートされている API を介して入手できます。

于 2008-09-09T23:53:12.023 に答える
3

はい、管理者権限がなくても、HKEY_CURRENT_USER の下の任意の場所に書き込むことができるはずです。ただし、これは事実上、このマシンの他のユーザーがアクセスできないプライベート ストアであるため、そこに共有構成を配置することはできません。

于 2008-09-09T23:44:09.250 に答える