tags:

views:

202

answers:

0

Hi

I'm trying to set an registry access rule on a remote machine:

using (RegistryKey localMachineKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, serverName))
{
  RegistrySecurity rs = new RegistrySecurity();
  rs.AddAccessRule(new RegistryAccessRule(userName, RegistryRights.FullControl, AccessControlType.Allow));

  using (RegistryKey subKey = localMachineKey.CreateSubKey(registryKey))
  {
    subKey.SetValue(name, value);
    subKey.SetAccessControl(rs);
  }
}

this produces the following exception:

    System.NotSupportedException: The supplied handle is invalid. This can happen when trying to set an ACL on an anonymous kernel object.
   at System.Security.AccessControl.NativeObjectSecurity.Persist(String name, SafeHandle handle, AccessControlSections includeSections, Object exceptionContext)
   at System.Security.AccessControl.NativeObjectSecurity.Persist(SafeHandle handle, AccessControlSections includeSections, Object exceptionContext)
   at System.Security.AccessControl.RegistrySecurity.Persist(SafeRegistryHandle hKey, String keyName)...

Does anyone know how to make this working? Thanks!