0

我正在尝试在注册表项上设置以下权限。但是当它尝试时我得到一个 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);
       }
   }
}

在此处输入图像描述

4

3 回答 3

1

尝试

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

(双倍的 '\')

如果没有,试试这个答案

于 2013-07-17T15:01:41.790 回答
1

nullreference 异常很可能在 RegistryKeyrk本身上。

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

于 2013-07-17T15:02:34.083 回答
1

此行导致您出错

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

在这里放置一个调试器,看看它是否有值或为空。如果为空,则检查路径是否有效。如果它是有效的这样做

RegistryKey rk = Registry.LocalMachine.OpenSubKey(@"\\SOFTWARE\\Wow6432Node\\123Test", true);
于 2013-07-17T15:11:01.780 回答