每当我尝试在我的代码中调用CreateSubKey时,我都会收到UnauthorizedAccessException 。
const string regKeyPath = @"Software\Apps\jp2code.net\FTMaint";
private void BuildRegistry() {
string[] split = regKeyPath.Split('\\');
keyMaker(Registry.LocalMachine, split, 0);
}
private static void keyMaker(RegistryKey key, string[] path, int index) {
string keyValue = path[index++];
RegistryKey key2;
if (!String.IsNullOrEmpty(keyValue)) {
string subKey = null;
string[] subKeyNames = key.GetSubKeyNames();
foreach (var item in subKeyNames) {
if (keyValue == item) {
subKey = item;
}
}
if (String.IsNullOrEmpty(subKey)) {
key2 = key.CreateSubKey(keyValue);
} else {
key2 = key.OpenSubKey(subKey);
}
//key2 = key.OpenSubKey(keyValue, String.IsNullOrEmpty(subKey));
} else {
key2 = key;
}
if (index < path.Length) {
try {
keyMaker(key2, path, index + 1);
} finally {
key2.Close();
}
}
}
我在 MSDN Social 上发现有人遇到类似问题的帖子>> HERE <<,但那里的解决方案(使用重载的 OpenSubKey 方法)只为我返回了一个 NULL RegistryKey。
这适用于 Windows Mobile 5 设备模拟器。
谁能看到我做错了什么?
当代码第一次到达一个不存在的键并尝试创建它时,就会引发错误。
谢谢!