[C#] SetAccessControl Не удалось выполнить запись в раздел реестра

Sonfire

Новый пользователь
Сообщения
6
Реакции
0
Пытаюсь изменить привилегии в ветки реестра, но происходит ошибка.Запускаю от администратора, через regedit работает
Язык c#
C#:
public static void GrantRevokeRegKeyRights()
{
    // RegistryAccessRule ace берется из списка
     GrantRegKeyRights(Key, new NTAccount(ace.IdentityReference.Value), actFlags, rightsFlags, inherFlags, propFlags);
}
  public static void GrantRegKeyRights(RegistryKey regKey,
            NTAccount user,
            AccessControlType actFlags,
            RegistryRights rightsFlags,
            InheritanceFlags inherFlags,
            PropagationFlags propFlags
        )
        {
          
            RegistrySecurity regSecurity = new RegistrySecurity();
         
     
            RegistryAccessRule rule = new RegistryAccessRule(user, rightsFlags, inherFlags,
                propFlags, actFlags);
             regSecurity.AddAccessRule(rule);
          
            try
            {
              
                regKey.SetAccessControl(regSecurity);//Ошибка записи
              
            
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
          
        }
 
Последнее редактирование модератором:
Отсюда ничего не понятно. Покажите полный код.
Чему = actFlags, rightsFlags, inherFlags, propFlags, какой Key указывается ?

Покажите распечатку всех текущих привилегий над оперируемым ключем, например, так или таким скриптом через PowerShell:
PowerShell:
$HKCU = [Uint32]'0x80000001'

$UC = "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.zip\UserChoice"

$oWMI = get-wmiobject -list "StdRegProv" -namespace 'root\default' -EnableAllPrivileges

$SD = $oWMI.GetSecurityDescriptor($HKCU, $UC).Descriptor

for ($i = 0; $i -lt $SD.DACL.count; $i++)
{
  echo ==========================
  "SID        = " + (New-Object System.Security.Principal.SecurityIdentifier($SD.DACL[$i].Trustee.SID, 0)).Value
  "Name       = " + $SD.DACL[$i].Trustee.Domain + "\" + $SD.DACL[$i].Trustee.Name
  "AccessMask = " + $SD.DACL[$i].AccessMask
  "AceFlags   = " + $SD.DACL[$i].AceFlags
  "AceType    = " + $SD.DACL[$i].AceType
}

но происходит ошибка
Какая ошибка и где?
 
Назад
Сверху Снизу