Representar conta de administrador para editar a chave do Registro não está funcionando (C #)

Estou usando o código a seguir para editar uma chave do Registro na seção da máquina local ('SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList \% SID%'). Tudo parece estar bem até eu realmente tentar abrir a chave do registro (com permissões de gravação); uma SecurityException é lançada com a mensagem 'O acesso ao registro solicitado não é permitido.' Eu verifiquei e verifiquei novamente as permissões para a chave do registro e o usuário que estou representando e tudo sai. O código funciona bem quando conectado à conta do usuário representado, mas quando conectado como usuário restrito, ele falha. É como se a representação funcionasse tudo, exceto para conceder privilégios administrativos ao encadeamento. Qualquer idéia sobre como consertar isso seria muito apreciada!

string KEY_STR = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList\\" + WindowsIdentity.GetCurrent().User.Value;
WindowsImpersonationContext adminContext = null;
IntPtr tokenHandle = new IntPtr(0);
try
{
    LogonUser(userName, domainName, password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref tokenHandle);
    if (tokenHandle.Equals(new IntPtr(0))) LogonUser(userName, computerName, password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref tokenHandle);
    WindowsIdentity adminIdentity = new WindowsIdentity(tokenHandle);
    adminContext = adminIdentity.Impersonate();
    RegistryKey key = Registry.LocalMachine.OpenSubKey(KEY_STR, true);
    key.SetValue("State", 0x60001);
    Console.Out.WriteLine("User profile changed to Mandatory.");
}
catch (Exception ex)
{
    Console.Out.WriteLine("\nUnable to set profile to Mandatory:\n\t" + ex.Message);
}
finally
{
    adminContext.Undo();
    if (tokenHandle != IntPtr.Zero) CloseHandle(tokenHandle);
}

questionAnswers(3)

yourAnswerToTheQuestion