如何在没有管理员权限的情况下从注册表读写_C#

问题描述 投票:0回答:1

我需要在没有管理员模式的情况下在注册表中写入和读取密钥。首先我想知道这可以吗?

请找到下面的代码(当 Visual Studio 在管理员模式下打开时,它工作正常)

RegistryKey key = Registry.LocalMachine.OpenSubKey("Software", true);

key.CreateSubKey("AppName");
key = key.OpenSubKey("AppName", true);

key.CreateSubKey("AppVersion");
key = key.OpenSubKey("AppVersion", true);

key.SetValue("myval", "677");
key.Close();  

阅读

RegistryKey key = Registry.LocalMachine.OpenSubKey("Software", true);

  key.CreateSubKey("AppName");
  key = key.OpenSubKey("AppName", true);
   //if it does exist, retrieve the stored values  
  if (key != null)
  {
    string s = (string)key.GetValue("myval");
    Console.Read();
    key.Close();
   }  

请任何人建议一种方法来做到这一点。 (我也尝试添加以下行)

错误

ClickOnce不支持请求执行级别 “需要管理员”。

c# registry privileges administration
1个回答
0
投票

这里有一个答案 如何在没有管理员的情况下写入注册表

读取是通过使用RegistryKeyPermissionCheck.ReadSubTree选项完成的

    RegistryKey baseRegistryKey = RegistryKey.OpenBaseKey(baseKey, RegistryView.Registry64);
    RegistryKey subRegistryKey = baseRegistryKey.OpenSubKey(subKey, RegistryKeyPermissionCheck.ReadSubTree);
    if (subRegistryKey != null)
    {
        object value64 = subRegistryKey.GetValue(value);
        if (value64 != null)
        {
            baseRegistryKey.Close();
            subRegistryKey.Close();
            return value64;
        }
        subRegistryKey.Close();
    }            
    baseRegistryKey.Close();

然后对RegistryView.Registry32执行相同的操作

© www.soinside.com 2019 - 2024. All rights reserved.