2010-05-11 14 views
5

Tengo una aplicación de winforms que necesita escribir registros. La aplicación también debe ejecutarse sin advertencias de UAC y utilizando una cuenta que no sea de administrador.¿Dónde hay un lugar seguro para almacenar archivos de registro que sea compatible con XP, Vista y Windows 7?

¿Dónde puedo escribir mis registros sin tener que pasar por alto la configuración de seguridad predeterminada? Además, esto tiene que funcionar en Windows XP, Vista y 7.

Puntos extra si todos los usuarios pueden escribir en el mismo conjunto de archivos de registro.

Respuesta

6

No puede (no debería) codificar la ruta. En su lugar, pregúntele a Windows dónde almacenarlo llamando a SHGetFolderPath, que puede usarse para devolver la ubicación del directorio AppData del usuario actual (o todos los usuarios).

artículo de MSDN, con solución C: http://support.microsoft.com/kb/310294

Útil ejemplo Delphi: http://delphi.about.com/od/kbwinshell/a/SHGetFolderPath.htm

en cuenta que es peligroso para hacer una consulta de una sola vez para la ruta, convertir a una cadena absoluto, y almacenar eso en su configuración. Porque Windows puede cambiarlo. Pueden unirse a un dominio, actualizar ventanas, etc., y Windows puede mover sus archivos. Si luego apunta a la ubicación anterior, sin preguntar nuevamente "dónde está esta carpeta", se romperá. Estado allí, hecho eso ...

1

Al usar SHGetFolderPath tiene la opción de utilizar directorios de archivos de registro por usuario o global. Si usa CSIDL_COMMON_APPDATA, entonces: "Esta información no vagará y está disponible para cualquiera que use la computadora". que suena como si fuera lo que quieres.

Cuestiones relacionadas