2009-03-24 7 views
6

Estoy desarrollando una aplicación que necesita escribir en el registro. Funciona bien en XP, pero cuando lo ejecuto en Vista, desde Visual Studio, recibo una excepción de seguridad en:SecurityException al usar Registry.LocalMachine.OpenSubKey

Registry.LocalMachine.OpenSubKey ("SOFTWARE", verdadero);

Estoy tratando de escribir una nueva clave en esa rama del registro.

¿Cuál es la forma correcta de hacerlo, en primer lugar para que pueda ejecutar mi aplicación desde VS en Vista, y en segundo lugar para que mis usuarios no tengan problemas al ejecutar Vista.

Gracias ...

Respuesta

10

Tanto en XP como en Vista necesita los derechos de administrador para escribir una nueva clave en LocalMachine.

Te encontrarás con que esto funciona en XP y falla en Vista debido a los diferentes valores predeterminados de la cuenta.

La solución rápida y sucia es garantizar que su aplicación se ejecute con derechos de administrador en ambos casos, aunque en Vista esto tiende a ser desaprobado.

La mejor solución sería rediseñar las cosas ligeramente: ¿puede la nueva clave secundaria ser escrita por su instalador (que se ejecuta con derechos de administrador), o podría almacenar su información en otro lugar?

+0

Sí, esta es una buena solución para mí - Creo que lo configuran durante la instalación ya que es una configuración de todo aplicación. –

7

usuarios estándar, y el administrador de contenidos que se ejecuta con el UAC en Vista, no tienen permiso para escribir la clave de registro de la máquina local. Esto también fallaría en XP si ejecutó como usuario estándar.

Las opciones son:

  • Uso Registry.CurrentUser lugar, si el ajuste es por usuario.
  • ejecutar su aplicación como administrador
  • Aflojar la ACL en la llave por lo que cualquiera puede escribir - que es definitivamente no es recomendable, ya que cualquier software malicioso en la caja puede brindar la clave.
2

Solo puede escribir en esa clave si se está ejecutando como administrador. Por lo tanto, deberá ejecutar VS como administrador y sus usuarios deberán ejecutar la aplicación como administrador.

Mi sugerencia sería ver si realmente necesita escribir en LocalMachine. Puede escribir en CurrentUser sin derechos de administrador.

1

Supongo que "funciona bajo XP" porque todo el mundo lo ejecuta como Admin en XP?

  • Usted podría tratar de eludir (crear la clave durante la instalación o el uso de una llave bajo CurrrentUser o algo así).

  • Puede otorgar el privilegio a su Aplicación durante la Configuración. Me temo que estoy un poco corto de detalles sobre cómo hacer eso.

0

Uso Registry.CurrentUser

+0

La pregunta requiere claramente LocalMachine – JohnZaj

Cuestiones relacionadas