2008-08-03 7 views
15

私はVisual Studio 2003(はい、レガシーアプリケーション)でセットアッププロジェクトを維持しようとしています。現時点で問題になっているのは、コンピュータ上のすべてのユーザーに対してレジストリエントリをHKCUに書き込む必要があることです。デフォルトのユーザー設定であり、ユーザーごとに変更されるため、HKLMではなくHKCUにする必要があります。私の気持ちはVisual Studioのセットアッププロジェクト - ユーザーごとのレジストリ設定

  1. これはこれは、インストーラがやるべきものではありませんが、何かがアプリケーションをインストールした後、ユーザープロファイルが作成されたときに何が起こるすべての後に(やるべきこと
  2. ことができないということです?)。念頭に置いて

、私はまだアプリケーションにできるだけ変更したいので、私の質問は、それはVisual Studio 2003セットアッププロジェクト内のすべてのユーザーのレジストリエントリを追加することが可能でしょうか?

そして、現時点ではプロジェクトは5つのレジストリのルートキー(HKEY_CLASSES_ROOT, HKEY_CURRENT_USERHKEY_LOCAL_MACHINEHKEY_USERS、およびユーザー/マシンハイブ)を示しています。私はUsersのルートキーについて何も知らないし、User/Machine Hiveも見ていない。誰でも私のことを啓発することはできますか?おそらく彼らは上記の私の問題を解決する可能性があります。

+0

この質問はありがとう –

答えて

5

まず:はい、これはあなたが指定した正確なresonのためのアプリケーションに属しているものです:新しいユーザープロファイルが作成された後はどうなりますか?もちろん、ドメインを使用している場合は、作成時にレジストリにいくつかのものを入れることは可能ですが、これは実際の使用例ではありません。アプリケーションは、seetingsがあるかどうかをチェックし、seetingsがない場合はデフォルトの設定を使用する必要があります。

つまり、HKEY_USERSハイブで他のユーザーのキーを変更することは可能です。

私は、Visual Studioの2003のセットアッププロジェクトでの経験がないので、ここでは(全く関係のない)のビットがちょうど見するあなたのアイデアを与えるかもしれないVBScriptコード:

const HKEY_USERS = &H80000003 
strComputer = "." 
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv") 
strKeyPath = "" 
objReg.EnumKey HKEY_USERS, strKeyPath, arrSubKeys 
strKeyPath = "\Software\Microsoft\Windows\CurrentVersion\WinTrust\Trust Providers\Software Publishing" 
For Each subkey In arrSubKeys 
    objReg.SetDWORDValue HKEY_USERS, subkey & strKeyPath, "State", 146944 
Next 

(のコード礼儀Jeroen Ritmeijer

1

私はMSDNのこのエントリで私の解決策に途中降機しています(これまで私がどのように見つけられなかったのか分かりません)。ユーザーが選択したときに、このハイブの下に入った

ユーザー/マシンハイブ
サブキーと値は、HKEY_CURRENT_USERハイブの下にインストールされます「ジャスト・ミー」やHKEY_USERSハイブ場合や、ユーザーがインストール時に「みんな」を選択します。

Registry Editor

5

これは、すべてのユーザー向けに設定する必要があるため、おそらくドメインの下で実行されている何らかの種類の共有コンピュータにあると思いますか? HERE

DRAGONS

はのは、ジョーとジェーンは、定期的にコンピュータにログオンしましょうBEは、その後、彼らはそれぞれの「レジストリ」を持つことになります。

あなたのアプリをインストールすると、インストーラは巨大なハッキングと嫌なことをして、HKCUで項目を設定します。

次に、ボブが来てログオンします(彼や他の500人の人がドメインにアカウントを持っていますので、これを行うことができます)。彼はこれまでこのコンピュータを使ったことがないので、レジストリはありません。彼が初めてログインすると、ウィンドウズが彼を作成しますが、あなたの設定はありません。

あなたのアプリは転倒したり、誤って動作したり、raynixonの不正な製品についてボブが大声で訴えています。

正しい答えは、アプリにデフォルトの設定がいくつかあるだけで、見つからない場合はレジストリに書き込むことができます。とにかく、あなたのアプリはレジストリに決して依存してはならず、必要に応じて何かを作成する必要があります。

1

MSDN articleにはUser/Machine Hiveについての記載がありますが、 HKEY_USERSに書き込みます。むしろ、誰も選択した場合、Just MeとHKLMを選択すると、HKCUに書き込まれます。

私の解決策は、User/Machine Hiveを使用することです。アプリケーションでは、レジストリエントリがHKCUにあるかどうかをチェックし、そうでなければHKLMからコピーします。私はこれがおそらくそれを行う最も理想的な方法ではないことは知っていますが、変更の量は最小です。

関連する問題