繁体   English   中英

尝试使用C#设置注册表权限时发生NullReferenceException

[英]NullReferenceException when trying to set registry permissions with C#

我试图在注册表项上设置以下权限。 但尝试时会收到NullReferenceException错误。 作为新手会使凝灰岩。 授予权限(这总是让我感到困惑),我很沮丧。 有人可以告诉我为什么要得到这个吗? 谢谢。

using System;
using Microsoft.Win32;
using System.Security.AccessControl;

namespace ConsoleApplication7
{
   class Program
   {
       static void Main(string[] args)
       {
           RegistrySecurity rs = new RegistrySecurity();
           string user = "Everyone";

           RegistryKey rk = Registry.LocalMachine.OpenSubKey(@"\SOFTWARE\Wow6432Node\123Test", true);

           rs.AddAccessRule(new RegistryAccessRule(user,
               RegistryRights.FullControl | RegistryRights.TakeOwnership,
               InheritanceFlags.ContainerInherit,
               PropagationFlags.None,
               AccessControlType.Allow));

           rk.SetAccessControl(rs);
       }
   }
}

在此处输入图片说明

尝试

@"\\SOFTWARE\\Wow6432Node\\123Test"

(双'\\')

如果不是,请尝试此答案

nullreference异常很可能在RegistryKey rk本身上。

您的应用程序是作为32位还是64位应用程序运行的? 您不需要指定Wow6432Node部分,而应该能够引用@"\\SOFTWARE\\123Test

这行导致您出错

 RegistryKey rk = Registry.LocalMachine.OpenSubKey(@"\SOFTWARE\Wow6432Node\123Test", true);

在此处放置调试器,看看它是否具有值或为空。 如果为null,请检查路径是否有效。 如果有效,就这样

RegistryKey rk = Registry.LocalMachine.OpenSubKey(@"\\SOFTWARE\\Wow6432Node\\123Test", true);

暂无
暂无

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

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