woodykiddy woodykiddy - 22 days ago 8
C# Question

Programmatically assign the permission to a registry subkey

Here is how we

manually
assign the permissions to a registry key:

To assign permissions to a registry key


  • Open Registry Editor. Click the key to which you want to assign permissions.

  • On the Edit menu, click Permissions.

  • Assign an access level to the selected key as follows:

  • To grant the user permission to read the key contents, but not save
    any changes made to the file, under Permissions for name, for Read,
    select the Allow check box.

  • To grant the user permission to open, edit, and take ownership of the
    selected key, under Permissions for name, for Full Control, select
    the Allow check box.

  • To grant the user special permission in the selected key, click
    Advanced.



So my question is, would it be possible to do it programmatically? Say, if I want to grant Users full control permission on a particular subkey, how should I write the code in C#? Thanks very much.

Answer

RegistrySecurity class is also useful here. So we can write the following code to apply access rules on the registry key for a current user.

RegistrySecurity rs = new RegistrySecurity(); // it is right string for this code
string currentUserStr = Environment.UserDomainName + "\\" + Environment.UserName;
rs.AddAccessRule(new RegistryAccessRule(currentUserStr, RegistryRights.WriteKey | RegistryRights.ReadKey | RegistryRights.Delete | RegistryRights.FullControl, AccessControlType.Allow));