Proyecto de instalación de Visual Studio: por configuración de registro de usuario

votos
16

Estoy tratando de mantener un proyecto de instalación Visual Studio 2003(sí, es una aplicación heredada). El problema que tenemos en este momento es que necesitamos escribir entradas de registro HKCUpara cada usuario en la computadora. Deben estar en HKCUlugar de HKLMser la configuración de usuario predeterminada, y cambian por usuario. Mi sensación es que

  1. Esto no es posible
  2. Esto no es algo que el instalador debería estar haciendo, sino algo que la aplicación debería estar haciendo (¿después de todo lo que sucede cuando se crea un perfil de usuario después de la instalación?).

Con esto en mente, todavía quiero cambiar lo menos posible en la aplicación, por lo que mi pregunta es, ¿ es posible agregar entradas de registro para cada usuario en un Visual Studio 2003proyecto de configuración?

Y, por el momento el proyecto enumera cinco claves raíz del registro ( HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, HKEY_USERS, y el usuario / máquina Colmena). Realmente no sé nada sobre la clave raíz de Usuarios, y no he visto User / Machine Hive. ¿Alguien puede iluminarme sobre lo que son? Tal vez podrían resolver mi problema anterior.

Publicado el 03/08/2008 a las 21:35
fuente por usuario
En otros idiomas...                            


4 respuestas

votos
5

Supongo que porque quieres configurarlo para todos los usuarios, ¿estás en algún tipo de computadora compartida, que probablemente se está ejecutando bajo un dominio?

AQUÍ HAY DRAGONES

Digamos que Joe y Jane regularmente inician sesión en la computadora, entonces cada uno tendrá 'registros'.

A continuación, instalará su aplicación, y el instalador empleará hacks gigantes y cosas desagradables para configurar los elementos en HKCU para ellos.

ENTONCES, bob vendrá e iniciará sesión (él y otras 500 personas tienen cuentas en el dominio y pueden hacerlo). Nunca ha usado esta computadora antes, por lo que no tiene registro. La primera vez que inicia sesión, Windows le crea una, pero él no tendrá su configuración.

Su aplicación se cae o se comporta de manera incorrecta, y bob se queja en voz alta sobre esos productos asquerosos de raynixon incorporados.

La respuesta correcta es simplemente tener algunas configuraciones predeterminadas en su aplicación, que pueden escribirlas en el registro si no las encuentra. Es una buena práctica general que su aplicación nunca dependa del registro, y debe crear cosas según sea necesario, para cualquier entrada de registro, no solo HKCU, de todos modos

Respondida el 03/08/2008 a las 22:17
fuente por usuario

votos
5

Primero: Sí, esto es algo que pertenece a la Aplicación para el reson exacto que especificó: ¿Qué sucede después de que se crean nuevos perfiles de usuario? Claro, si está usando un dominio es posible tener algunas cosas puestas en el registro en la creación, pero esto no es realmente un caso de uso. La aplicación debe verificar si hay seetings y usar la configuración predeterminada si no es así.

Dicho esto, es posible cambiar las llaves de otros usuarios a través de HKEY_USERS Hive.

No tengo experiencia con el Proyecto de instalación de Visual Studio 2003, así que aquí hay un poco de código VBScript (sin ninguna relación) que podría darte una idea de dónde buscar:

const HKEY_USERS = &H80000003
strComputer = "."
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = ""
objReg.EnumKey HKEY_USERS, strKeyPath, arrSubKeys
strKeyPath = "\Software\Microsoft\Windows\CurrentVersion\WinTrust\Trust Providers\Software Publishing"
For Each subkey In arrSubKeys
    objReg.SetDWORDValue HKEY_USERS, subkey & strKeyPath, "State", 146944
Next

(Código Cortesía de Jeroen Ritmeijer )

Respondida el 03/08/2008 a las 21:48
fuente por usuario

votos
1

A pesar de lo que dice el artículo de MSDN sobre User / Machine Hive, no escribe en HKEY_USERS. Más bien escribe a HKCU si seleccionas Just Me y HKLM si seleccionas a todos.

Por lo tanto, mi solución será utilizar el enrutador de usuario / máquina y, a continuación, en la aplicación, comprueba si las entradas de registro están en HKCU y, de no ser así, las copia de HKLM. Sé que probablemente esta no sea la forma más ideal de hacerlo, pero tiene la menor cantidad de cambios.

Respondida el 03/08/2008 a las 23:34
fuente por usuario

votos
1

Ya llegué a mi solución con esta entrada en MSDN (no sé cómo no pude encontrarla antes).


Subclaves de User / Machine Hive y valores ingresados ​​en este subárbol se instalarán en la sección HKEY_CURRENT_USER cuando un usuario elija "Just Me" o HKEY_USERS o cuando un usuario elija "Everyone" durante la instalación.

Editor de registro

Respondida el 03/08/2008 a las 21:45
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more