2008-09-09 16 views
40

Sé que ya no deberíamos usar el registro para almacenar datos de aplicación, pero al actualizar una aplicación heredada (y que queremos hacer el menor número de cambios), ¿qué registros Hives no son permitidos por los administradores?¿Qué acceso de registro puede obtener sin privilegios de administrador?

¿Puedo acceder a todos HKEY_CURRENT_USER (la aplicación actualmente tiene acceso a HKEY_LOCAL_MACHINE) sin privilegios de administrador?

+1

"Sé que no deberíamos estar usando el registro para almacenar datos de aplicación más" - No creo que esto sea del todo cierto. El registro tiene muchas ventajas sobre el sistema de archivos y no conozco ninguna orientación de Microsoft para dejar de usarlo en el desarrollo de aplicaciones. Probablemente no deba usarlo para almacenar grandes cantidades de datos de la aplicación, pero es un buen lugar para almacenar configuraciones y datos de configuración. – syplex

Respuesta

64

En general, un usuario que no sea administrador tiene este acceso al registro:

de lectura/escritura a:

  • HKEY_CURRENT_USER

Sólo Lectura:

  • HKEY_LOCAL_MACHINE
  • HKEY_CLASSES_ROOT (que es sólo un enlace a HKEY_LOCAL_MACHINE\Software\Classes)

Es posible cambiar algunos de estos permisos sobre una base clave por clave, pero es extremadamente raro. No deberías tener que preocuparte por eso.

Para sus propósitos, su aplicación debe escribir configuraciones y configuraciones en HKEY_CURRENT_USER. El lugar canónico está en cualquier lugar dentro de HKEY_CURRENT_USER\Software\YourCompany\YourProduct\

Es posible que tenga configuraciones globales (para todos los usuarios) en HKEY_LOCAL_MACHINE. Es muy raro que necesite hacer esto, y debe evitarlo. El problema es que cualquier usuario puede "leerlos", pero solo un administrador (o, por extensión, su programa de instalación/instalación) puede "configurarlos".

Otra fuente común de problemas: su aplicación no debe escribir nada en los directorios Program files o Windows. Si necesita escribir en archivos, hay varias opciones disponibles; describirlos a todos sería una discusión más larga. Todas las opciones terminan escribiendo en una subcarpeta u otra bajo %USERPROFILE% para el usuario en cuestión.

Finalmente, su aplicación debe permanecer fuera de HKEY_CURRENT_CONFIG. Esta colmena contiene configuraciones de hardware, configuraciones de servicios y otros elementos que el 99,9999% de las aplicaciones no deberían tener en cuenta (por ejemplo, contiene la lista actual de dispositivos plug-and-play). Si necesita algo a partir de allí, la mayoría de la información está disponible a través de API compatibles en otros lugares.

+2

Gracias. Guarde una búsqueda infructuosa en MSDN, aunque un enlace sería bueno. Esta Q & A quiere más exposición. –

3

Sí, debe poder escribir en cualquier lugar bajo HKEY_CURRENT_USER sin tener privilegios de administrador. Pero se trata de una tienda privada a la que ningún otro usuario de esta máquina podrá acceder, por lo que no puede colocar allí ninguna configuración compartida.

Cuestiones relacionadas