Pregunta

Estoy intentando mantener un proyecto de instalación en Visual Studio 2003 (sí, es una aplicación heredada).El problema que tenemos en este momento es que necesitamos escribir entradas de registro en HKCU para cada usuario de la computadora.Necesitan estar en el HKCU en vez de HKLM porque son las configuraciones de usuario predeterminadas y cambian según el usuario.Mi sentimiento es que

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

Con eso en mente, todavía quiero cambiar lo menos posible en la aplicación, así que mi pregunta es: ¿Es posible agregar entradas de registro para cada usuario en un Visual Studio 2003 proyecto de instalació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 Colmena Usuario/Máquina).Realmente no sé nada sobre la clave raíz de Usuarios y no he visto User/Machine Hive.¿Alguien puede iluminarme sobre cuáles son?Quizás podrían resolver mi problema anterior.

¿Fue útil?

Solución

Primero:Sí, esto es algo que pertenece a la Solicitud para el motivo exacto que usted especificó:¿Qué sucede después de que se crean nuevos perfiles de usuario?Claro, si está utilizando un dominio, es posible incluir algunas cosas en el registro durante la creación, pero este no es realmente un caso de uso.La aplicación debe verificar si hay configuraciones y usar la configuración predeterminada en caso contrario.

Dicho esto, ES posible cambiar las claves 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 (totalmente no relacionado) que podría darle 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)

Otros consejos

Supongo que, como 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 inician sesión regularmente en la computadora, entonces cada uno tendrá "registros".

Luego instalarás tu aplicación y el instalador empleará trucos gigantes y cosas desagradables para configurar elementos en HKCU para ellos.

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

Luego, su aplicación falla o se comporta incorrectamente y Bob se queja en voz alta de esos productos de mala calidad de Raynixon Incorporated.

La respuesta correcta es simplemente tener algunas configuraciones predeterminadas en su aplicación, que puede 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 del registro, no solo HKCU, de todos modos.

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

Entonces, mi solución será usar User/Machine Hive, y luego en la aplicación verifica si las entradas del registro están en HKCU y, si no, las copia desde HKLM.Sé que esta probablemente no sea la forma más ideal de hacerlo, pero tiene la menor cantidad de cambios.

Estoy a medio camino de mi solución con esta entrada en MSDN (no sé cómo no pude encontrarla antes).

Colmena de usuario/máquina
Las subclaves y los valores ingresados ​​en este subárbol se instalarán en el subárbol HKEY_CURRENT_USER cuando un usuario elija "Solo yo" o el subárbol HKEY_USERS o cuando un usuario elija "Todos" durante la instalación.

Editor de registro Archivo de artículos de MSDN

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top