solicitado registro net microsoft framework denegado acceso c# .net security uac registry

net - acceso denegado al registro solicitado c#



El acceso al registro solicitado no está permitido (6)

Estoy escribiendo una utilidad de modificación que modifica algunas teclas bajo HKEY_CLASSES_ROOT .

Todo funciona bien en Windows XP, y así sucesivamente. Pero obtengo un error. El Requested registry access is not allowed en Windows 7. Vista y 2008, supongo.

¿Cómo debo modificar mi código para agregar soporte UAC?


Como solución temporal, los usuarios pueden hacer clic con el botón derecho en la utilidad y seleccionar "Ejecutar como administrador".




No puede escribir en las colmenas HKCR (o HKLM) en Vista y las versiones más nuevas de Windows a menos que tenga privilegios administrativos. Por lo tanto, deberá iniciar sesión como administrador antes de ejecutar su utilidad, proporcionarle un manifiesto que indique que requiere el nivel de administrador (lo que solicitará al usuario la información de inicio de sesión del administrador) o dejar de cambiar las cosas en lugares que no -Los administradores no deberían estar jugando. :-)


Si no necesita los privilegios de administrador para toda la aplicación, o solo para unos pocos cambios poco frecuentes, puede hacer los cambios en un nuevo proceso y ejecutarlo usando:

Process.StartInfo.UseShellExecute = true; Process.StartInfo.Verb = "runas";

que ejecutará el proceso como administrador para hacer lo que necesite con el registro, pero regrese a su aplicación con los privilegios normales. De esta forma, no solicita al usuario un diálogo de UAC cada vez que se inicia.


app.manifest debería ser así:

<?xml version="1.0" encoding="utf-8"?> <asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <assemblyIdentity version="1.0.0.0" name="MyApplication.app" /> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> <security> <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> </requestedPrivileges> </security> </trustInfo> </asmv1:assembly>