放置应用程序数据的最佳位置?
时间:2020-03-06 15:04:30 来源:igfitidea点击:
Possible Duplicate: VS2008 Setup Project: Shared (By All Users) Application Data Files?
请有人建议放置某些应用程序数据的最佳位置(路径)是什么,所有用户都应该可以访问和编辑这些数据。
这是在考虑Windows XP和Windows Vista,并且我希望上述路径的任何文件中的更改都不会触发UAC!
解决方案
Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)
应该解析为C:\ Documents and Settings \ All Users \ Application Data \
在此创建子文件夹,例如MyCompany \ MyApp
VS2008安装项目:共享(按所有用户)应用程序数据文件?
%ALLUSERSPROFILE%\应用程序数据\ App
这可能是所有用户无需提升特权即可访问的唯一目录。
如果我们使用的是.NET,则Application.CommonAppDataPath应该可以工作。
普通Win API:SHGetFolderPath,使用" CSIDL_COMMON_APPDATA"作为文件夹类型。
如果用户不打算直接修改数据,而只能由应用程序修改,则IsolatedStorage http://msdn.microsoft.com/zh-cn/library/3ak841sy(VS.80).aspx
Checkers提供了使用C或者C ++进行此操作的重要线索。因此,我对他的回答投了赞成票。
以下是他遗漏的详细信息:
// 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
If you're using .NET, Application.CommonAppDataPath should work. Also make sure that virtualization is turned off for your application
我们也可以将其放入数据库中。