[英]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.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.