2011-06-27 10 views
2

VS2010展開プロジェクトを使用して展開されたWindowsサービスがあります。私はユーザ名/パスワードをインストーラに入力する必要があり、その後、これらの詳細がレジストリにコミットして使用されるようにします。Visual Studio 2010展開プロジェクトからHKLMに書き込む

インストーラーが正常に動作し、カスタムアクションが正しくセットアップされています。私がHKLMにコミットしようとすると、エラーも出力もなくなり、HKCUと同じコマンドが正常に動作します。これは、標準ユーザーと管理ユーザー(RunAsを含む)の両方と同じです。

public override void Install(IDictionary stateSaver) 
{ 
    base.Install(stateSaver); 

    var username = Context.Parameters["username"]; 
    var password = Context.Parameters["password"]; 

    // HKLM\Software\MySoftware 
    RegistryKey hklm = Registry.LocalMachine.CreateSubKey("SOFTWARE\\MySoftware"); 
    hklm.SetValue("username", username, RegistryValueKind.String); 
    hklm.SetValue("password", password, RegistryValueKind.String); 
    hklm.Close(); 

    // HKCU\Software\MySoftware 
    RegistryKey hkcu = Registry.CurrentUser.CreateSubKey("SOFTWARE\\MySoftware"); 
    hkcu.SetValue("username", username, RegistryValueKind.String); 
    hkcu.SetValue("password", password, RegistryValueKind.String); 
    hkcu.Close(); 
} 

私はCreateSubkey(x)の代わりに.OpenSubkey(x、true)を使用しようとしました。結果は同じです。

どのような助けも大幅に強化されます。 64ビットオペレーティングシステム上で

よろしく

クリス

+0

可能な複製:http://stackoverflow.com/questions/1782492/installer-custom-action-problem-cant-write-to-register-key – Blazes

+0

私はCustomActionの良いリファレンスを見つけることができないため、確認できませんCustomActionの 'Install'部分で権限が昇格されていない可能性がありますか?そのコードを 'Commit'に移動しようとしましたか? – Blazes

+0

ちょうどコミットアクションにtryと同じ結果が与えられました!コードをコンソールアプリケーションに移動しました。管理者の資格情報と明示的に実行されています。私はHKLMのための私のセキュリティ設定が株式以外の何かになる何らかの理由を見ません! – Chris

答えて

4

、あなたが戻ってHKLM \ SOFTWARE \ WOW6432NODE \ MySoftwareでこれらのキーを見つけることができます。これらのレジストリキーは、32ビットプログラム用に仮想化されています。

+0

Spot on!説明のためのTa! – Chris

関連する問題