gpt4 book ai didi

c# - RegistryKey.OpenSubKey 抛出 SecurityException

转载 作者:行者123 更新时间:2023-12-04 04:00:42 27 4
gpt4 key购买 nike

这个问题可能有重复 herehere , 但他们从未得到充分的回答。

我有幸重命名了一个用户文件夹,并且不得不更改注册表中的“几个”键。这已经完成,但我很好奇是否可以自动执行此过程。为此,我尝试像这样遍历注册表树:

using Microsoft.Win32;
using System;
using System.Collections.Generic;

namespace RegistryReplacer
{
class Program
{

private static void printKey(RegistryKey key)
{
Console.WriteLine("{0} has {1} sub keys", key.Name, key.SubKeyCount);
}

private static void traverseKey(RegistryKey key)
{
using (key)
{
printKey(key);

string[] subKeyNames = key.GetSubKeyNames();
foreach(string subKeyName in subKeyNames)
{
RegistryKey subKey = key.OpenSubKey(subKeyName);
traverseKey(subKey);
}

}
}


static void Main(string[] args)
{
List<RegistryKey> rootKeys = new List<RegistryKey> {
Registry.LocalMachine,
Registry.CurrentUser,
Registry.ClassesRoot,
Registry.CurrentConfig,
Registry.Users
};

foreach (RegistryKey rootKey in rootKeys)
{
traverseKey(rootKey);
}
}
}
}

我可以遍历树的根(LocalMachine 等),但是在某些键(不是全部)上调用 OpenSubKey 时,我遇到了

System.Security.SecurityException: 'Requested registry access is not allowed.'

我正在以管理员权限运行应用程序(使用右键单击+“以管理员身份运行”或使用 this ),但这没有帮助。这是在我的个人机器上(64 位 Windows 10 Pro,版本 2004),我是管理员并且有足够的权限通过 regedit 更改注册表。

我做错了什么?

最佳答案

该问题与注册表项所有权有关 - 它很可能具有自定义权限并由 SYSTEM、TrustedInstaller 或其他一些帐户拥有。

这是一个很好的答案,深入解释了问题:https://superuser.com/a/493121 .

所以,您做的一切都正确,但没有按预期工作。 “这不是错误,这是功能”(c)

关于c# - RegistryKey.OpenSubKey 抛出 SecurityException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63081156/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com