如何从注册表中读取所有值

本文关键字:读取 注册表 | 更新日期: 2023-09-27 17:59:25

我要做的是用户名和文件夹路径集中在一个键中。

所以我有这个结构

HKEY_LOCAL_MACHINE

--软件

--XYZ

--userDB

现在在userDB中,我有这样的信息

> NAME    TYpe   Data
> 
> Admin  Reg_sz  C:'Desktop
> 
> Admin2 REG_SZ  C:'xyz'logs

如何读取userDB中的值。。。

有什么建议吗。。感谢

我试过这个代码:

            RegistryKey masterKey = Registry.LocalMachine.CreateSubKey("SOFTWARE''xyz");
        if (masterKey == null)
        {
            //Console.WriteLine("Null Masterkey!");
        }
        else
        {
            table.Rows.Add(false, masterKey.GetValue("userDB"), DateTime.Now);
            dataGridView2.DataSource = table;
            //Console.WriteLine("MyKey = {0}", masterKey.GetValue("userDB"));
        }
        masterKey.Close();

但我弄错了拒绝访问注册表项"HKEY_LOCAL_MACHINE''SOFTWARE''xyz"。

如何从注册表中读取所有值

当您谈论读取主题中的值时,您的代码实际上会写入注册表。

默认情况下,您不能作为有限用户写入注册表的大部分HKLM部分。有限的用户可能不会销毁/操作这些密钥,因为这存在安全风险。

您可以让您的安装程序(使用admin-privs运行)更改共享注册表项的权限。但那是糟糕的风格,我不会这么做。

当使用asp.net时,可能会有与介质信任模型相关的额外限制。

您有:

RegistryKey masterKey = Registry.LocalMachine.CreateSubKey("SOFTWARE''xyz");

RegistryKey。CreateSubKey记录为:

创建新的子密钥或打开现有的子密钥以进行写访问。

打开以获得写访问权限很可能需要写权限。

CCD_ 2用于打开用于读取访问的密钥。因此,它很可能不需要任何写入权限。

在什么时候访问被拒绝?您是以提升身份还是以管理员身份运行此代码?

调用CreateSubKey()时可能会失败,而写入HKEY_LOCAL_MACHINE时需要提升权限。

我认为是注册表。LocalMachine。CreateSubKey("SOFTWARE''xyz")将尝试打开具有写访问权限的密钥(如果该密钥存在)。

请尝试以读取访问权限打开密钥。我认为您可以使用CreateSubKey(String,RegistryKeyPermissionCheck)来指定权限访问。

有关详细信息,请参阅MSDN:http://msdn.microsoft.com/en-us/library/dd411617.aspx