El mejor lugar para guardar información del usuario para aplicaciones de Windows XP y Vista
-
02-07-2019 - |
Pregunta
Necesito guardar la información de inicio de sesión de un usuario en forma cifrada para esta aplicación que estoy creando, pero no estoy seguro de cuál es el mejor lugar para guardar el archivo. No quiero guardarlo en la carpeta de la aplicación del programa como lo quiero por usuario.
Entonces, ¿cuál es la mejor carpeta (o forma) para guardarlo?
Editar: Usar C ++.
Solución
Parece que C: \ Documents and Settings \% username% \ Local Settings \ Application Data puede ser el lugar apropiado según Wikipedia . El artículo dice que esta ubicación se utiliza para " configuraciones de aplicaciones específicas del usuario y específicas de la computadora " ;.
Editar: Cruizer señaló en los comentarios (respondería allí pero aún no puedo comentar) que en Vista es C: \ Users \% username% y que no debería estar codificado. Gracias.
Otros consejos
Utilice la API de protección de datos (DPAPI), una parte de CryptoAPI en XP y Vista. Aquí hay una buena descripción general de DPAPI: http://msdn.microsoft.com/en -us / library / ms995355.aspx
Sí, la ruta de la aplicación local parece ganadora.
Encontré este artículo en MSDN para obtenerlo en C ++: http: / /msdn.microsoft.com/en-us/library/bb762494.aspx
Ejemplo:
char localAppPath[MAX_PATH];
SHGetFolderPath(NULL, CSIDL_LOCAL_APPDATA, NULL, SHGFP_TYPE_CURRENT, localAppPath);
¿estás usando .NET? ¿qué tal IsolatedStorage ? De esa manera no tendría que preocuparse por la ubicación del directorio, simplemente estará allí ...
La información del usuario siempre debe ir en algún subdirectorio en% HOMEDRIVE %% HOMEPATH% (que se asigna al directorio principal de los usuarios). Sin excepciones. Un buen lugar para la configuración específica de la aplicación por usuario es un subdirectorio dentro de% APPDATA%. Esto se asigna a: "% HOMEDRIVE %% HOMEPATH% \ Application Data " en XP y para: " % HOMEDRIVE %% HOMEPATH% \ AppData \ Roaming " en Vista.
Si está utilizando .NET para obtener carpetas especiales, puede usar
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
o
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
para la versión no itinerante.