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());
        }

    }

当我在不同的系统中执行相同的代码时,代码运行正确。
b'coz 没有在该系统上创建任何用户。但现在在这个系统中,我从控制面板创建了 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 回答