0

レジストリを作成しようとしていますが、次のメッセージが表示されます。

レジストリ キー 'HKEY_LOCAL_MACHINE\Software\aspire' へのアクセスが拒否されました

そして、以下は私のコードです。

protected void CreateRegistry()
    {
        dtStartDate = DateTime.Now;

        string strUser = Environment.UserDomainName + "\\" + Environment.UserName;

        RegistrySecurity rs = new RegistrySecurity();
        //rs.AddAccessRule(new RegistryAccessRule("Administrator", RegistryRights.FullControl, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.InheritOnly, AccessControlType.Allow));
        rs.AddAccessRule(new RegistryAccessRule(strUser, RegistryRights.FullControl, InheritanceFlags.None, PropagationFlags.None, AccessControlType.Allow));

        RegistryKey regDate = null;

        try
        {
            regDate = Registry.LocalMachine.CreateSubKey("Software\\aspire", RegistryKeyPermissionCheck.Default, rs);

            if (regDate != null)
            {
                regDate.SetValue("Date", dtStartDate.ToString(strDateFormat));
                regDate.Close();
                MessageBox.Show("created");
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message.ToString());
        }

    }

別のシステムで同じコードを実行すると、コードは正しく実行されます。
そのシステムにはユーザーが作成されていません。しかし、今このシステムでは、コントロールパネルから2人のユーザーを作成しました.これは私に起こっています. どちらのシステムも Windows 7 で実行されています。

助けてください

ありがとうございました

4

2 に答える 2

1

Windows 7 を使用している場合は、管理者モードでアプリケーションの実行を開始します。Visual Studio からデバッグしている場合は、管理者モードで Visual Studio を起動します。

于 2012-06-06T09:19:05.350 に答える
1

a) 昇格された権限でアプリケーションを実行するか、b) 代わりに HKEY_CURRENT_USER を使用します。実際にすべてのユーザーにソフトウェアをインストールする必要がある場合を除き、いずれにせよより良い方法です。

アプリケーションでデフォルトで管理者権限を要求する場合は、マニフェストを追加して追加する必要があります。

実行時にプロンプ​​トが表示されます。

于 2012-06-06T09:19:15.590 に答える