2008-10-03 11 views

Respuesta

2
Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) 

debe resolver a C: \ Documents and Settings \ All Users \ Datos de programa \

A partir de ahí, hacen subcarpetas como MyCompany \ MiApl

1

% ALLUSERSPROFILE% \ Application Data \ App
este es probablemente el único directorio al que todos los usuarios pueden acceder sin privilegios elevados.

+0

Esto está bastante codificado, y la carpeta "Datos de la aplicación" podría estar en otro idioma. ¿Alguna forma de internacionalizar el nombre de "Carpeta de aplicación"? – Romias

1

Si está utilizando .NET, Application.CommonAppDataPath debería funcionar.

+0

¿no es esto solo para winforms? –

5

API simple: SHGetFolderPath con CSIDL_COMMON_APPDATA como tipo de carpeta.

1

Damas proporciona la pista vital para hacer esto en C o C++. Así que he votado su respuesta.

Aquí están los detalles que dejó a cabo:

// assumes 
// company is a pointer to a character sting containing company name 
// appname is a pointer to a character string containing application name 
// fname is a pointer to a character string cintaining name of file to be created 

#include <shlobj.h> // for SHGetFolderPath 
#include <direct.h> // for _mkdir 

char path[MAX_PATH]; 
SHGetFolderPath(NULL,CSIDL_COMMON_APPDATA,NULL,NULL,path); 
strcat(path,"/"); 
strcat(path,company); 
_mkdir(path); 
strcat(path,"/"); 
strcat(path,appname); 
_mkdir(path); 
strcat(path,"/"); 
strcat(path,fname); 

// path is now a character string which can passed to fopen 
2

Si está utilizando .NET, Application.CommonAppDataPath debería funcionar. También asegúrese de que la virtualización esté desactivada para su aplicación

0

También puede ponerlo en una base de datos.

0

Para Vista y superior, MS parece estar presionando para usar SHGetKnownFolderPath() en lugar de SHGetFolderPath(). Elija qué carpeta solicitar en el list of KNOWNFOLDERIDs. Según las respuestas aquí, el equivalente que desearía sería probablemente FOLDERID_ProgramData. Me doy cuenta de que esta pregunta es bastante antigua, pero supongo que para fines de archivo ...

Cuestiones relacionadas