繁体   English   中英

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

[英]how to read all values from the registry

我想做的是在一键中有多个用户名和文件夹路径。

所以我有这个结构

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记录为:

创建一个新的子项或打开一个现有的子项以进行写访问。

打开写访问权限很可能需要写特权。

RegistryKey.OpenSubKey用于打开密钥以进行读取访问。 因此,它很可能不需要写权限。

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

您可能会在调用CreateSubKey()时失败,该操作在写入HKEY_LOCAL_MACHINE时需要提升的权限。

我认为Registry.LocalMachine.CreateSubKey(“ SOFTWARE \\ xyz”)会尝试打开具有写访问权限的密钥(如果存在)。

尝试改用具有读取权限的钥匙。 我认为您可以改用CreateSubKey(String,RegistryKeyPermissionCheck)来指定权限访问。

有关更多信息,请参考MSDN: http : //msdn.microsoft.com/zh-cn/library/dd411617.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM